Go에서 양식 요청 크기 제한 설정
리소스 낭비와 보안 위험을 방지하려면 양식 요청 크기를 제어하는 것이 중요합니다. Go에서는 이미 POST 요청에 10MB 제한을 적용하고 있지만 특정 시나리오에서는 크기를 추가로 제한해야 할 수도 있습니다.
ServeHTTP 메서드에서 크기를 제한하려면 다음 접근 방식을 사용하세요.
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) }
오류 처리
한계에 도달하면 MaxBytesReader는 응답. 결과적으로 서버는 핸들러를 종료할 때 연결을 종료합니다. 이 접근 방식은 과도한 데이터 소비를 효과적으로 방지합니다.
추가 보안 조치
악성 클라이언트에 대한 보호를 강화하려면 Server.ReadTimeout, Server.WriteTimeout, 잠재적으로 Server.MaxHeaderBytes.
전역 크기 제한
모든 핸들러에 크기 제한을 적용하려면 래퍼 핸들러를 생성하고 다음과 같이 구성합니다.
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})) }
결론
MaxBytesReader를 사용하면 양식 요청의 크기를 효과적으로 제한하고 악의적인 클라이언트가 서버 리소스를 악용할 수 없도록 보장합니다. 포괄적인 보호를 위해 이 접근 방식을 추가 시간 초과 및 헤더 크기 제한과 결합하세요.
위 내용은 Go에서 양식 요청 크기를 효과적으로 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!