development

쿼리 문자열의 가능한 최대 길이는 얼마입니까?

big-blog 2020. 2. 11. 22:34
반응형

쿼리 문자열의 가능한 최대 길이는 얼마입니까?


브라우저에 따라 다릅니 까? 또한 웹 스택마다 요청에서 얻을 수있는 데이터 양에 대해 다른 제한이 있습니까?


RFC 2616 (하이퍼 텍스트 전송 프로토콜-HTTP / 1.1)은 쿼리 문자열 길이에 제한이 없음을 나타냅니다 (섹션 3.2.1). RFC 3986 은 또한 제한이 없지만 DNS 제한으로 인해 호스트 이름이 255 자로 제한됨을 나타냅니다 (섹션 2.3.3).

사양에는 최대 길이가 지정되어 있지 않지만 웹 브라우저 및 서버 소프트웨어에 의해 실제 제한이 적용됩니다. Boutell.com 에서 찾은 연구를 바탕으로 :

  • Microsoft Internet Explorer (브라우저)
    Microsoft는 Internet Explorer에서 URL의 최대 길이가 2,083 자이며 URL의 경로 부분에 2,048자를 넘지 않는다고 명시하고 있습니다. 이보다 긴 URL을 사용하려고하면 Internet Explorer에서 명확한 오류 메시지가 생성됩니다.

  • Microsoft Edge (브라우저)
    한도는 약 81578 자입니다. Microsoft Edge의 URL 길이 제한을 참조하십시오

  • Chrome 64k 자 이후에는 URL 표시를
    중지 하지만 100k 자 이상을 제공 할 수 있습니다. 그 이상의 테스트는 더 이상 수행되지 않았습니다.

  • Firefox (브라우저)
    65,536 자 후에 위치 표시 줄에 Windows Firefox 1.5.x의 URL이 더 이상 표시되지 않습니다. 그러나 더 긴 URL은 작동합니다. 10 만 자 이후에는 추가 테스트가 수행되지 않았습니다.

  • Safari (브라우저)
    80,000 자 이상이 작동합니다. 테스트는 그 이상으로 시도되지 않았습니다.

  • Opera (브라우저)
    190,000 자 이상이 작동합니다. 190,000 자 후에 테스트가 중지되었습니다. Windows 용 Opera 9는 190,000 자로도 위치 표시 줄에 완전히 편집 가능하고 복사 가능하며 붙여 넣기 가능한 URL을 계속 표시했습니다.

  • Apache (서버)
    웹 브라우저에서 서버 URL 길이 제한이 약 4,000 자 정도 인 초기 URL 길이를 측정하려고 시도한 후 Apache에서 "413 Entity Too Large"오류가 발생합니다. Red Hat Enterprise Linux 4에서 발견 된 최신 Apache 빌드가 사용되었습니다. 공식 아파치 문서는 요청의 개별 필드에 대한 8,192 바이트 제한 만 언급합니다.

  • Microsoft Internet Information Server (서버)
    기본 제한은 16,384 자입니다 (예, Microsoft 웹 서버는 Microsoft 웹 브라우저보다 더 긴 URL을 허용합니다). 이것은 구성 가능합니다.

  • Perl HTTP :: Daemon (서버)
    최대 8,000 바이트가 작동합니다. Perl의 HTTP :: Daemon 모듈로 웹 애플리케이션 서버를 구성하는 경우 모든 HTTP 요청 헤더의 결합 된 크기에 16,384 바이트 제한이 발생합니다. 여기에는 POST 방법 양식 데이터, 파일 업로드 등이 포함되지 않지만 URL은 포함됩니다. 실제로 URL이 8,000자를 초과하면 413 오류가 발생했습니다. 이 제한은 쉽게 제거 할 수 있습니다. Daemon.pm에서 16x1024의 모든 항목을 찾아서 더 큰 값으로 바꾸십시오. 물론 이것은 서비스 거부 공격에 대한 노출을 증가시킵니다.


공식적으로 RFC 2616에 의해 지정된 제한은 없지만 많은 보안 프로토콜 및 권장 사항에 따르면 서버의 maxQueryStrings는 최대 문자 제한 1024로 설정해야합니다. 쿼리 문자열을 포함한 전체 URL은 최대 2048로 설정해야합니다. 문자. 이는 웹 서버에서 HTTP 요청 DDOS 속도 저하 취약점을 방지하기위한 것입니다. 이는 일반적으로 Qualys Web Application Scanner 및 기타 보안 스캐너에 취약점으로 나타납니다.

Web.config가있는 Windows IIS 서버에 대해서는 아래 코드를 참조하십시오.

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

참고 : 쿼리 문자열 및 URL 길이를 제한하면 HTTP 요청 속도 저하 DDOS 공격을 완전히 막을 수는 없지만이를 방지하기 위해 취할 수있는 한 단계입니다.


다른 웹 스택은 다른 길이의 http 요청을 지원합니다. Safari의 초기 스택은 4,000 자만 지원하므로 USER-STATE로 인해 ASP.net 페이지를 처리하는 데 어려움이 있음을 알고 있습니다. 이것은 POST 용이므로 브라우저를 확인하고 스택 제한이 무엇인지 확인해야합니다. 최신 브라우저에서도 한계에 도달 할 수 있다고 생각합니다. 기억할 수는 없지만 그중 하나 (IE6, 제 생각에는)는 16 비트 제한, 32,768 또는 기타 제한이 있습니다.

참고 URL : https://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string



반응형