Какое ограничение на параметры QueryString / GET / URL - PullRequest
51 голосов
/ 22 июня 2010

Какое ограничение на параметры QueryString / GET / URL

Ответы [ 3 ]

59 голосов
/ 22 июня 2010

В теории нет предела.Для HTTP-URL спецификация HTTP 1.1 гласит:

Протокол HTTP не устанавливает никаких априорных ограничений на длину URI.Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они обслуживают, и ДОЛЖНЫ иметь возможность обрабатывать URI неограниченной длины, если они предоставляют формы на основе GET, которые могут генерировать такие URI.Сервер ДОЛЖЕН вернуть статус 414 (Request-URI Too Long), если URI длиннее, чем может обработать сервер (см. Раздел 10.4.15).

Но на практике многие клиенты и серверы делают толькоПоддержка URL до определенной длины.Основное правило - не использовать URL-адреса длиннее 2000 символов (процентная кодировка уже учтена).

5 голосов
/ 22 июня 2010

Нет определенного предела.Однако RFC 2068 гласит:

Протокол HTTP не устанавливает никаких априорных ограничений на длину URI.Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они обслуживают, и ДОЛЖНЫ иметь возможность обрабатывать URI неограниченной длины, если они предоставляют формы на основе GET, которые могут генерировать такие URI.Сервер ДОЛЖЕН вернуть статус 414 (Request-URI Too Long), если URI длиннее, чем может обработать сервер (см. Раздел 10.4.15).Примечание. Серверы должны соблюдать осторожность при зависимости длины URI выше 255 байт, поскольку некоторые более старые реализации клиента или прокси-сервера могут неправильно поддерживать эти длины.

0 голосов
/ 10 июня 2019

Хотя официально ограничений нет, во многих рекомендациях по настройке безопасности указывается, что для maxQueryStrings на сервере должно быть установлено максимальное ограничение в 1024 символа, а для всего URL-адреса, включая строку запроса, должно быть установлено максимум 2048 символов. Это сделано для того, чтобы предотвратить уязвимость Slow HTTP Request на веб-сервере и предотвратить медленные DDOS-атаки, которые обнаруживаются на сканере веб-приложений Qualys и других сканерах безопасности.

См. Приведенный ниже код для серверов Windows IIS с Web.config:

<security>
    <requestFiltering>
        <requestLimits maxQueryString="1024" maxUrl="2048">
           <headerLimits>
              <add header="Content-type" sizeLimit="100" />
           </headerLimits>
        </requestLimits>
     </requestFiltering>
</security>
...