質問:
のサイズをさらに制限することをお勧めしますか?使用時のフォーム
答え:
はい、リソースの占有を防ぐために、フォーム リクエストのサイズを制限することをお勧めします。デフォルトの制限は 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 も同様です。
グローバルLimit:
すべてのハンドラーにリクエスト本文の制限を設定したい場合は、次のようなカスタム ハンドラーでルート ハンドラーをラップします。
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 を呼び出すとき、または設定するときのハンドラーserver.
結論:
MaxBytesReader を使用し、適切なセキュリティ構成を適用することで、Go アプリケーションのリクエスト本文のサイズを効果的に制限して、リソースの枯渇を防ぐことができます。
以上がリソース管理を改善するには、Go でリクエストの本文サイズを制限する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。