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
Mary-Kate Olsenasal
2024-12-17 07:52:25493semak imbas

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
}

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)
 }

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!

Kenyataan:
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