Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengehadkan Saiz Permintaan Borang dengan Berkesan dalam Go?
Menetapkan Had Saiz untuk Permintaan Borang dalam Go
Mengawal saiz permintaan borang adalah penting untuk mengelakkan penggodam sumber dan risiko keselamatan. Walaupun Go sudah mengenakan had 10MB untuk permintaan POST, pengehadan lagi saiz mungkin diperlukan dalam senario tertentu.
Untuk mengehadkan saiz dalam kaedah ServeHTTP anda, gunakan pendekatan berikut:
r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) err := r.ParseForm() if err != nil { return // Handle error (e.g., redirect or set error status code) }
Pengendalian Ralat
Apabila had dicapai, MaxBytesReader menetapkan bendera pada respons. Akibatnya, pelayan menamatkan sambungan apabila keluar dari pengendali. Pendekatan ini berkesan menghalang penggunaan data yang berlebihan.
Langkah Keselamatan Tambahan
Untuk perlindungan yang dipertingkatkan terhadap pelanggan berniat jahat, pertimbangkan untuk menetapkan tamat masa pelayan tambahan: Server.ReadTimeout, Server.WriteTimeout, dan berpotensi Server.MaxHeaderBytes.
Saiz Global Had
Untuk menguatkuasakan had saiz merentas semua pengendali, buat pengendali pembalut dan konfigurasikannya seperti berikut:
type maxBytesHandler struct { h http.Handler n int64 } func (h *maxBytesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { r.Body = http.MaxBytesReader(w, r.Body, h.n) h.h.ServeHTTP(w, r) } func main() { log.Fatal(http.ListenAndServe(":8080", &maxBytesHandler{h: mux, n: 4096})) }
Kesimpulan
Menggunakan MaxBytesReader dengan berkesan mengehadkan saiz permintaan borang dan memastikan pelanggan berniat jahat tidak dapat mengeksploitasi pelayan anda. sumber. Untuk perlindungan menyeluruh, gabungkan pendekatan ini dengan tamat masa tambahan dan had saiz pengepala.
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Saiz Permintaan Borang dengan Berkesan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!