Golang HTTP リクエストの本文サイズ制限を考慮する
サーバー上のリソースの枯渇を防ぐには、POST フォーム リクエストのサイズを管理することが重要です。デフォルトでは、Golang はこれらのリクエストを 10MB に制限します。ただし、この制限をさらに制限する必要がある場合は、慎重に対処することが重要です。
実行可能なアプローチの 1 つは、r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) メソッドを利用することです。 ServeHTTP 関数内で。これにより、リクエスト本文の最大バイト制限が設定され、それを超えるとサーバーは読み取りを停止し、接続を閉じます。後続の r.ParseForm() 呼び出しは正常に実行されます。
ただし、この制限に達した後にエラーを返すと、Go の HTTP リクエストの処理方法により接続が閉じられない可能性があります。接続が適切に閉じられていることを確認するには、エラー ステータス コードを設定し、http.Error(w, "", http.StatusRequestEntityTooLarge) を使用してそれに応じて応答します。
または、ルート ハンドラーをカスタム ハンドラーでラップすることもできます。ルート ハンドラーに委任する前に制限を設定する MaxBytesHandler。これにより、制限をすべてのハンドラーにわたってグローバルに適用できます。
セキュリティを最大限に高めるには、ReadTimeout、WriteTimeout、MaxHeaderBytes などの追加のサーバー パラメーターを設定して、悪意のあるクライアントを効果的に処理することをお勧めします。
これらの対策の目的は、サーバーの安定性とパフォーマンスを確保しながら、悪意のあるクライアントや不適切に設計されたクライアントによる過剰なリソース消費を防ぐことであることに注意してください。これらの手法を実装すると、Golang で HTTP フォーム リクエストのサイズを効果的に管理できます。
以上がGo の HTTP サーバーで POST リクエストのサイズを効果的に制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。