QueryString/GET/URLパラメーターの制限は何ですか
理論に制限はありません。 HTTP URLの場合、 HTTP 1.1仕様 状態:
HTTPプロトコルでは、URIの長さに事前の制限はありません。サーバーは、提供するリソースのURIを処理できなければならず、そのようなURIを生成できるGETベースのフォームを提供する場合、無制限の長さのURIを処理できる必要があります。 URIがサーバーが処理できるよりも長い場合、サーバーは414(Request-URI Too Long)ステータスを返す必要があります(セクション10.4.15を参照)。
しかし実際には、多くのクライアントとサーバーは特定の長さまでのURLのみをサポートします。 経験則では、2000文字より長いURLを使用しない (パーセントエンコーディングはすでに考慮されています)。
定義された制限はありません。ただし、RFC 2068の状態:
HTTPプロトコルでは、URIの長さに事前の制限はありません。サーバーは、提供するリソースのURIを処理できなければならず、そのようなURIを生成できるGETベースのフォームを提供する場合、無制限の長さのURIを処理できる必要があります。 URIがサーバーが処理できるよりも長い場合、サーバーは414(Request-URI Too Long)ステータスを返す必要があります(セクション10.4.15を参照)。注:サーバーは、255バイトを超えるURIの長さに依存することに注意する必要があります。古いクライアントまたはプロキシの実装によっては、これらの長さが適切にサポートされない場合があるためです。
公式には制限はありませんが、多くのセキュリティ構成の推奨事項では、サーバー上のmaxQueryStringsを最大文字数1024に設定し、クエリ文字列を含むURL全体を最大2048文字に設定する必要があると規定されています。これは、Qualys Web Application Scannerおよびその他のセキュリティスキャナーに現れる遅いDDOS攻撃を防ぐために、Webサーバーの遅いHTTP要求の脆弱性を防ぐためです。
以下のWindowsのコードをご覧くださいIIS Web.configのサーバー:
<security>
<requestFiltering>
<requestLimits maxQueryString="1024" maxUrl="2048">
<headerLimits>
<add header="Content-type" sizeLimit="100" />
</headerLimits>
</requestLimits>
</requestFiltering>
</security>