> 백엔드 개발 > Golang > 더 나은 리소스 관리를 위해 Go에서 요청 본문 크기를 제한해야 합니까?

더 나은 리소스 관리를 위해 Go에서 요청 본문 크기를 제한해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-17 07:52:25
원래의
491명이 탐색했습니다.

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

자원 보호를 위해 Golang에서 요청 본문 크기 제한

질문:

크기를 더 제한하는 것이 바람직합니까? 사용할 때의 형태 갈까요?

답변:

예, 리소스 호깅을 방지하기 위해 양식 요청의 크기를 제한하는 것이 좋습니다. 기본 제한은 10MB이지만 필요에 따라 더 줄일 수 있습니다.

코드:

요청 본문 크기를 제한하려면 MaxBytesReader 기능을 사용하세요. 예는 다음과 같습니다.

r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) 
err := r.ParseForm()
if err != nil {
     // Redirect or set error status code.
     return
}
로그인 후 복사

오류 처리:

요청 본문 크기가 제한을 초과하면 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)
 }
로그인 후 복사

그런 다음 루트 핸들러를 래핑하세요. ListenAndServe를 호출하거나 구성할 때 핸들러

결론:

MaxBytesReader를 사용하고 적절한 보안 구성을 적용하면 Go 애플리케이션의 요청 본문 크기를 효과적으로 제한하여 리소스 고갈을 방지할 수 있습니다.

위 내용은 더 나은 리소스 관리를 위해 Go에서 요청 본문 크기를 제한해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿