Rumah > pembangunan bahagian belakang > Golang > Sekiranya anda Hadkan Permintaan Saiz Badan dalam Go untuk Pengurusan Sumber yang Lebih Baik?

Sekiranya anda Hadkan Permintaan Saiz Badan dalam Go untuk Pengurusan Sumber yang Lebih Baik?

Mary-Kate Olsen
Lepaskan: 2024-12-17 07:52:25
asal
492 orang telah melayarinya

Should you Limit Request Body Size in Go for Better Resource Management?

Menghadkan Saiz Badan Permintaan di Golang untuk Perlindungan Sumber

Soalan:

Adakah dinasihatkan untuk mengehadkan lagi saiz bentuk apabila menggunakan Pergi?

Jawapan:

Ya, adalah dinasihatkan untuk mengehadkan saiz permintaan borang untuk mengelakkan penggodam sumber. Had lalai ialah 10MB, tetapi anda boleh mengurangkannya lagi mengikut keperluan.

Kod:

Untuk mengehadkan saiz badan permintaan, gunakan fungsi MaxBytesReader. Berikut ialah contoh:

r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) 
err := r.ParseForm()
if err != nil {
     // Redirect or set error status code.
     return
}
Salin selepas log masuk

Pengendalian Ralat:

Apabila saiz badan permintaan melebihi had, MaxBytesReader menetapkan bendera pada respons. Bendera ini disemak apabila pengendali kembali. Jika bendera ditetapkan, pelayan menutup sambungan dan tidak membaca kandungan permintaan yang tinggal. Oleh itu, tidak perlu menangani ralat dalam kod secara eksplisit.

Pertimbangan Keselamatan:

Untuk melindungi daripada pelanggan berniat jahat, tetapkan Server.ReadTimeout, Server.WriteTimeout dan Server.MaxHeaderBytes juga.

Global Had:

Jika anda ingin menetapkan had badan permintaan untuk semua pengendali anda, bungkus pengendali akar dengan pengendali tersuai seperti ini:

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)
 }
Salin selepas log masuk

Kemudian, bungkus akar pengendali apabila memanggil ListenAndServe atau mengkonfigurasi a pelayan.

Kesimpulan:

Dengan menggunakan MaxBytesReader dan menggunakan konfigurasi keselamatan yang sesuai, anda boleh mengehadkan saiz badan permintaan dengan berkesan dalam aplikasi Go anda untuk mengelakkan kehabisan sumber.

Atas ialah kandungan terperinci Sekiranya anda Hadkan Permintaan Saiz Badan dalam Go untuk Pengurusan Sumber yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan