web-dev-qa-db-ja.com

QueryString / GET / URLパラメーターの制限は何ですか

QueryString/GET/URLパラメーターの制限は何ですか

53
Lalchand

理論に制限はありません。 HTTP URLの場合、 HTTP 1.1仕様 状態:

HTTPプロトコルでは、URIの長さに事前の制限はありません。サーバーは、提供するリソースのURIを処理できなければならず、そのようなURIを生成できるGETベースのフォームを提供する場合、無制限の長さのURIを処理できる必要があります。 URIがサーバーが処理できるよりも長い場合、サーバーは414(Request-URI Too Long)ステータスを返す必要があります(セクション10.4.15を参照)。

しかし実際には、多くのクライアントとサーバーは特定の長さまでのURLのみをサポートします。 経験則では、2000文字より長いURLを使用しない (パーセントエンコーディングはすでに考慮されています)。

60
Gumbo

定義された制限はありません。ただし、RFC 2068の状態:

HTTPプロトコルでは、URIの長さに事前の制限はありません。サーバーは、提供するリソースのURIを処理できなければならず、そのようなURIを生成できるGETベースのフォームを提供する場合、無制限の長さのURIを処理できる必要があります。 URIがサーバーが処理できるよりも長い場合、サーバーは414(Request-URI Too Long)ステータスを返す必要があります(セクション10.4.15を参照)。注:サーバーは、255バイトを超えるURIの長さに依存することに注意する必要があります。古いクライアントまたはプロキシの実装によっては、これらの長さが適切にサポートされない場合があるためです。

5
Matteo Mosca

公式には制限はありませんが、多くのセキュリティ構成の推奨事項では、サーバー上の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>
0
TroySteven