브라우저에 따라 다릅니 까? 또한 웹 스택마다 요청에서 얻을 수있는 데이터 양에 대해 다른 제한이 있습니까?
브라우저에 따라 다릅니 까? 또한 웹 스택마다 요청에서 얻을 수있는 데이터 양에 대해 다른 제한이 있습니까?
답변:
RFC 2616 (하이퍼 텍스트 전송 프로토콜-HTTP / 1.1)은 쿼리 문자열 길이에 제한이 없음을 나타냅니다 (섹션 3.2.1). RFC 3986 (Uniform Resource Identifier — URI)도 제한이 없지만 DNS 제한으로 인해 호스트 이름이 255 자로 제한됨을 나타냅니다 (섹션 2.3.3).
사양에는 최대 길이가 지정되어 있지 않지만 웹 브라우저와 서버 소프트웨어에 의해 실제 제한이 적용됩니다. 안타깝게도 원래 사이트에서 더 이상 사용할 수 없지만 그늘진 것처럼 보이는 대출 사이트로 이어지는 연구에 따르면 Boutell.com의 Internet Archive 에서 여전히 찾을 수 있습니다 .
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의 모든 항목을 찾아서 더 큰 값으로 바꾸십시오. 물론 이것은 서비스 거부 공격에 대한 노출을 증가시킵니다.
java.lang.IllegalArgumentException: Request header is too large
바람둥이 스프링 부팅 응용 프로그램 서버.
공식적으로 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>
machine.config를 사용하여 서버 수준에서도 작동합니다.
참고 : 쿼리 문자열 및 URL 길이를 제한하면 HTTP 요청 속도 저하 DDOS 공격을 완전히 막을 수는 없지만이를 방지하기 위해 취할 수있는 한 단계입니다.