Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang · Pelajaran

Pembatasan Kadar dan Pendikitan API

Pelajari cara pembatasan kadar melindungi API daripada penyalahgunaan, kekerasan kasar dan penafian perkhidmatan, serta cara melaksanakan strategi baldi token dan tetingkap gelongsor.

Pelajaran 4 daripada 413 langkah

Pembatasan Kadar dan Pendikitan API ialah pelajaran Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang merangkumi sejumlah 4 pelajaran.

Mengapa Mengehadkan Kadar?

Pengehad kadar mengehadkan bilangan permintaan yang boleh dibuat oleh pelanggan dalam sesuatu tempoh. Ia melindungi API daripada serangan cuba semua kemungkinan, pengikisan, gelung tidak sengaja dan penafian perkhidmatan.

Ia merupakan kawalan utama yang disenaraikan di bawah amalan terbaik keselamatan API.

Pendikitan berbanding Pengehadan

Pengehad kadar menolak permintaan yang melebihi had tetap; pendikitan memperlahankannya (dengan beratur atau menangguhkan) dan bukannya menolak secara terus. Kedua-duanya mengurus beban dan penyalahgunaan, dan sering digunakan bersama.

Perkara untuk Dihadkan

Pilih kunci untuk mengira permintaan:

  • Kunci API atau ID pengguna bagi trafik yang disahkan
  • Alamat IP bagi trafik tanpa nama
  • Sensitiviti titik akhir (had lebih ketat untuk log masuk)

Menggabungkan kunci memberikan kawalan yang lebih terperinci dan menentang pintasan mudah.

Tetingkap Tetap

Pendekatan paling mudah mengira permintaan dalam tetingkap masa tetap dan menetapkan semula pembilang pada setiap tempoh. Pendekatan ini mudah tetapi membenarkan lonjakan pada hujung tetingkap (dua kali ganda had merentasi sempadan).

import time

window = {}
LIMIT = 5
PERIOD = 60

def allow(key):
    now = int(time.time() // PERIOD)
    count = window.get((key, now), 0)
    if count >= LIMIT:
        return False
    window[(key, now)] = count + 1
    return True

Baldi Token

Baldi token mengisi semula token pada kadar tetap sehingga mencapai kapasiti. Setiap permintaan menggunakan satu token; baldi kosong bermakna permintaan ditolak. Kaedah ini membenarkan lonjakan terkawal sambil menguatkuasakan kadar purata.

import time

class TokenBucket:
    def __init__(self, rate, capacity):
        self.rate = rate
        self.capacity = capacity
        self.tokens = capacity
        self.last = time.time()
    def allow(self):
        now = time.time()
        self.tokens = min(self.capacity, self.tokens + (now - self.last) * self.rate)
        self.last = now
        if self.tokens >= 1:
            self.tokens -= 1
            return True
        return False

Tetingkap Gelongsor

tetingkap gelongsor menjejaki cap masa permintaan terkini dan hanya mengira permintaan dalam tempoh N saat yang lalu. Kaedah ini mengelakkan masalah lonjakan yang berlaku pada tetingkap tetap, tetapi memerlukan lebih banyak pengurusan rekod.

Pengehadan Kadar Teragih

Dengan berbilang pelayan, pembilang perlu dikongsi. Storan pusat seperti Redis menyimpan pembilang supaya had dikenakan pada keseluruhan kelompok, bukannya pada setiap tika. Gunakan operasi atom untuk mengelakkan keadaan perlumbaan.

Memaklumkan Had

Maklumkan pelanggan tentang had mereka melalui pengepala respons supaya pelanggan yang mematuhi amalan baik boleh memperlahankan kadar permintaan.

headers = {
    'X-RateLimit-Limit': '100',
    'X-RateLimit-Remaining': '42',
    'X-RateLimit-Reset': '1717000000',
    'Retry-After': '30',
}
for k, v in headers.items():
    print(k + ': ' + v)

Kod Status

Kembalikan 429 Too Many Requests apabila pelanggan melebihi had, sebaik-baiknya bersama pengepala Retry-After. Ini ialah isyarat piawai yang dijangka oleh pelanggan dan SDK.

Melindungi Titik Akhir Sensitif

Gunakan had yang lebih ketat pada titik akhir berisiko tinggi seperti log masuk, penetapan semula kata laluan dan pengesahan OTP. Had yang ketat di sini secara langsung membendung serangan cuba-jaya dan pengisian kelayakan.

  • Log masuk: beberapa percubaan seminit
  • Penetapan semula kata laluan: beberapa percubaan sejam
  • Bacaan umum: had yang lebih longgar

Mengelakkan Perangkap

Berwaspada terhadap cara pintasan: IP yang sentiasa berubah, ketiadaan had pada sesetengah laluan, dan had yang ditetapkan semula apabila pelayan dimulakan semula. Letakkan pengehad kadar pada lapisan get laluan atau perantara supaya setiap laluan diliputi secara konsisten.

Semakan Pantas

Uji pemahaman anda tentang pengehad kadar.

Rumusan

Anda telah mempelajari sebab API memerlukan pengehadan kadar, cara memilih kunci pengehad, serta pertukaran yang terlibat dalam strategi tetingkap tetap, baldi token dan tetingkap gelongsor. Anda juga telah melihat pengehad teragih dengan Redis, respons 429 dan had yang lebih ketat untuk titik akhir sensitif.

Percuma untuk bermula

Pelajari Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Pembatasan Kadar dan Pendikitan API” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang, termasuk “Pembatasan Kadar dan Pendikitan API”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pembatasan Kadar dan Pendikitan API”?

Pelajari cara pembatasan kadar melindungi API daripada penyalahgunaan, kekerasan kasar dan penafian perkhidmatan, serta cara melaksanakan strategi baldi token dan tetingkap gelongsor. Anda berlatih Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Pembatasan Kadar dan Pendikitan API” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang ini?

Ya. Setiap pelajaran Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mereka Bentuk API REST yang Selamat
  2. Keselamatan API GraphQL
  3. Mencegah Serangan SSRF
  4. Pembatasan Kadar dan Pendikitan API
← Kembali ke Pengekodan Selamat dan OWASP Top 10 untuk Bahagian Belakang