웹 서버에 특정 확장자의 파일 업로드(HTTP POST 요청)를 제한하고 싶습니다.
간략한 설명
HTTP 요청의 POST 데이터를 분석할 때, 업로드된 콘텐츠는 다음 중 한 유형일 수 있습니다.
참고: AWS WAF는 요청 본문의 처음 8KB(8,192바이트)를 검사합니다. 대규모 본문 요청에 대한 자세한 내용은 AWS WAF에서 오버사이즈 웹 요청 구성 요소 처리를 참조하세요.
.pdf, .docx 또는 .exe와 같은 특정 파일 확장자의 파일 업로드를 제한하려면 다음 단계를 완료합니다.
- 요청 본문을 검사할 사용자 지정 웹 액세스 제어 목록(웹 ACL) 규칙을 생성합니다.
- 규칙 내에 정규식 일치 조건을 작성합니다. 이 정규식 패턴을 사용하여 여러 파일 확장자를 제한하도록 규칙을 구성할 수 있습니다.
- 규칙 동작을 BLOCK으로 설정합니다.
- 이 사용자 지정 규칙이 이 규칙을 차단할 수 있는 모든 웹 ACL 규칙보다 높은 우선순위를 갖도록 규칙 우선순위를 정의합니다.
- 규칙이 특정 파일 확장자를 올바르게 차단하는지 확인합니다.
해결 방법
POST 데이터가 사용하는 콘텐츠 유형 식별
HTTP 요청 내의 POST 데이터는 일반적으로 양식 데이터 또는 바이너리를 사용합니다.
- 양식 데이터에는 HTTP가 웹 서버로 전송(또는 "게시")하는 웹 페이지(또는 "HTML 양식")에 사용자가 입력하는 모든 데이터가 포함됩니다.
- 바이너리 페이로드는 텍스트 페이로드 외의 모든 페이로드입니다. 예를 들어, 바이너리 페이로드는 .jpeg 파일, .gzip 파일 또는 .xml 파일일 수 있습니다. 여기에는 .pdf 애플리케이션, .jpeg 이미지 또는 .zip 애플리케이션과 같은 일반 바이너리 데이터가 포함됩니다. 모든 파일 확장자 유형에 관해서는 Internet Assigned Numbers Authority(IANA) 웹사이트의 미디어 유형을 참조하세요.
POST 요청의 유형을 식별하려면 HTTP POST 헤더의 Content-Type 값을 참조하세요. 다음 예시에는 Content-Type에 multipart/form-data가 포함되어 있습니다.
Content-Type: multipart/form-data
"Content-Type" 헤더에 "multipart/form-data" 값이 포함된 경우, 다음 단계를 수행하여 규칙을 생성합니다.
-
AWS WAF 콘솔을 엽니다.
-
탐색 창의 AWS WAF에서 웹 ACL을 선택합니다.
-
리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다.
참고: Amazon CloudFront를 위한 웹 ACL을 설정하는 경우 글로벌을 선택합니다.
-
웹 ACL을 선택합니다. 그런 다음 규칙 탭을 선택합니다.
-
규칙 추가 드롭다운 목록을 선택한 다음 내 규칙 및 규칙 그룹 추가를 선택합니다.
-
규칙 유형에 규칙 빌더를 선택합니다.
-
이름에 이 규칙을 식별하는 이름을 입력합니다.
-
유형에 일반 규칙을 선택합니다.
-
요청인 경우에 문과 일치를 선택합니다. 그리고 문 에서 다음 필드를 설정합니다.
검사에 본문을 선택합니다.
콘텐츠 유형에 JSON을 선택합니다.
JSON 일치 범위에 값을 선택합니다.
요청 본문의 JSON이 올바르지 않은 경우 AWS WAF가 요청을 처리하는 방법에 사용 사례에 적합한 옵션을 선택합니다.
검사할 콘텐츠에 전체 JSON 콘텐츠를 선택합니다.
일치 유형에 정규식 일치를 선택합니다.
정규식에 일치시킬 정규식 패턴을 입력합니다. 다음 예시를 참고하세요.
(?:.pdf|.doc|.docx|.ppt)
-
(선택 사항) 텍스트 변환에는 텍스트 변환을 추가하거나 이러한 필드를 없음으로 유지할 수 있습니다.
-
오버사이즈 처리에는 사용 사례에 적합한 옵션을 선택합니다.
-
동작에서 차단을 선택합니다.
-
규칙 추가를 선택합니다.
-
(선택 사항) 규칙 우선순위 설정에서 규칙을 선택하고 우선순위를 변경합니다. AWS WAF는 규칙이 표시되는 순서대로 규칙을 처리합니다. 자세한 내용을 보려면 웹 ACL의 규칙 및 규칙 그룹 처리 순서를 참고하세요.
-
저장을 선택합니다.
규칙이 예상대로 작동하는지 검증합니다.
"Content-Type" 헤더에 "application/pdf" 또는 "application/ppt"와 같은 바이너리 값이 있는 경우 다음 단계를 완료하여 규칙을 생성합니다.
-
AWS WAF 콘솔을 엽니다.
-
탐색 창의 AWS WAF에서 웹 ACL을 선택합니다.
-
리전에서 웹 ACL을 생성한 AWS 리전을 선택합니다. 참고: Amazon CloudFront를 위한 웹 ACL을 설정하는 경우 글로벌을 선택합니다.
-
웹 ACL을 선택합니다. 그런 다음 규칙 탭을 선택합니다.
-
규칙 추가 드롭다운 목록을 선택한 다음 내 규칙 및 규칙 그룹 추가를 선택합니다.
-
규칙 유형에 규칙 빌더를 선택합니다.
-
이름에 이 규칙을 식별하는 이름을 입력합니다.
-
유형에 일반 규칙을 선택합니다.
-
요청인 경우에 문과 일치를 선택합니다. 그리고 문에서 다음 필드를 설정합니다.
검사에 단일 헤더를 선택합니다.
헤더 필드 이름에 Content-Type을 입력합니다.
일치 유형에 정규식 일치를 선택합니다.
정규식에 일치시킬 정규식 패턴을 입력합니다.
.pdf 및 .jpeg 파일의 경우 다음 예시와 같습니다.
(?:pdf|jpeg)
-
(선택 사항) 텍스트 변환에는 텍스트 변환을 추가하거나 이러한 필드를 없음으로 유지할 수 있습니다.
-
동작에서 차단을 선택합니다.
-
규칙 추가를 선택합니다.
-
(선택 사항) 규칙 우선순위 설정에서 규칙을 선택하고 우선순위를 변경합니다. AWS WAF는 규칙이 표시되는 순서대로 규칙을 처리합니다. 자세한 내용을 보려면 웹 ACL의 규칙 및 규칙 그룹 처리 순서를 참고하세요.
-
저장을 선택합니다.
-
규칙이 예상대로 작동하는지 검증합니다.
참고: 특정 업로드 URI 경로에 대한 규칙을 제한하려면 경로를 검사하는 웹 ACL 규칙 내에서 AND 문을 사용하세요.