AWS WAF에서 텍스트 변환 사용
이 섹션에서는 요청을 검사하기 전에 적용할 AWS WAF에 대한 변환을 제공하는 방법을 설명합니다.
패턴 또는 집합 제약 조건을 찾는 문에서 요청을 검사하기 전에 AWS WAF에서 적용할 변환을 제공할 수 있습니다. 변환은 공격자가 AWS WAF를 우회하기 위해 사용하는 일부 비정상적인 서식을 제거하기 위해 웹 요청을 다시 포맷합니다.
이 옵션을 JSON 본문 요청 구성 요소 선택과 함께 사용하는 경우 AWS WAF는 JSON에서 검사할 요소를 구문 분석하고 추출한 후 변환을 적용합니다. 자세한 내용은 JSON 본문 섹션을 참조하세요.
하나 이상의 변환을 제공하는 경우 AWS WAF에서 변환을 적용하는 순서도 설정합니다.
WCU – 각 텍스트 변환은 10WCU입니다.
AWS WAF 콘솔 및 API 설명서에서는 다음 위치에서 이러한 설정에 대한 지침도 제공합니다.
-
콘솔의 규칙 빌더 - 텍스트 변환. 이 옵션은 요청 구성 요소를 사용할 때 제공됩니다.
-
API 문 내용 –
TextTransformations
텍스트 변환을 위한 옵션
각 변환 목록에는 콘솔 및 API 사양과 뒤 이어 설명이 표시됩니다.
- Base64 decode –
BASE64_DECODE
-
AWS WAF는 Base64 인코딩 문자열을 디코딩합니다.
- Base64 decode extension –
BASE64_DECODE_EXT
-
AWS WAF는 Base64로 인코딩된 문자열을 디코딩하되 유효하지 않은 문자를 무시하는 엄격하지 않은 구현을 사용합니다.
- Command line –
CMD_LINE
-
이 옵션은 공격자가 운영 체제 명령줄 명령을 삽입하고 명령의 일부 또는 전부를 위장하기 위해 비정상적인 형식을 사용하는 상황을 완화합니다.
이 옵션을 사용하여 다음 변환을 수행합니다.
-
다음 문자 삭제:
\ " ' ^
-
다음 문자 앞에 있는 공백 삭제:
/ (
-
다음 문자를 공백으로 바꿈:
, ;
-
여러 개의 공백을 하나의 공백으로 바꿈
-
대문자
A-Z
을 소문자a-z
로 변환
-
- Compress whitespace –
COMPRESS_WHITE_SPACE
-
AWS WAF는 여러 공백을 하나의 공백으로 바꾸고 다음 문자를 공백 문자(ASCII 32)로 바꾸어 공백을 압축합니다.
-
폼피드(ASCII 12)
-
탭(ASCII 9)
-
새줄(ASCII 10)
-
캐리지 리턴(ASCII 13)
-
세로 탭(ASCII 11)
-
줄 바꿈하지 않는 공백(ASCII 160)
-
- CSS decode –
CSS_DECODE
-
AWS WAF는 CSS 2.x 이스케이프 규칙
syndata.html#characters
를 사용하여 인코딩된 문자를 디코딩합니다. 이 함수는 디코딩 프로세스에서 최대 2바이트를 사용하므로 일반적으로 인코딩되지 않는 CSS 인코딩을 사용하여 인코딩된 ASCII 문자를 찾는 데 도움이 될 수 있습니다. 또한 백슬래시와 16진수가 아닌 문자의 조합인 회피를 방지하는 데 유용합니다. 예를 들어javascript
의 경우ja\vascript
입니다. - Escape sequences decode –
ESCAPE_SEQ_DECODE
-
AWS WAF는 ANSI C 이스케이프 시퀀스
\a
,\b
,\f
,\n
,\r
,\t
,\v
,\\
,\?
,\'
,\"
,\xHH
(16진수),\0OOO
(8진수)를 디코딩합니다. 유효하지 않은 인코딩은 출력에 남아 있습니다. - Hex decode –
HEX_DECODE
-
AWS WAF는 16진수 문자열을 이진수로 디코딩합니다.
- HTML entity decode –
HTML_ENTITY_DECODE
-
AWS WAF는 16진수 형식
&#xhhhh;
또는 10진수 형식&#nnnn;
으로 표현된 문자를 해당 문자로 바꿉니다.AWS WAF에서 다음 HTML로 인코딩된 문자를 인코딩되지 않은 문자로 바꿉니다. 이 목록은
&QuOt;
예시처럼 소문자 HTML 인코딩을 사용하지만 처리는 대소문자를 구분하지 않으며"
는 동일하게 처리됩니다.HTML로 인코딩된 문자
다음으로 바꿈
"
"
&
&
<
<
>
>
또는 
줄 바꿈하지 않는 공백, 십진수 160


\n
, 10진수 10	
\t
, 10진수 9{
또는{
{
|
,|
또는|
|
}
또는}
}
!
!
#
#
$
$
&percent;
또는%
%
'
\
(
(
)
)
*
또는*
*
+
+
,
,
.
.
/
/
:
:
;
;
=
=
?
?
˜
또는˜
~
−
-
[
또는[
[
\
\\
]
또는]
]
&hat;
^
_
또는&underbar;
_
`
또는`
`
- JS decode –
JS_DECODE
-
AWS WAF는 JavaScript 이스케이프 시퀀스를 디코딩합니다.
\uHHHH
코드가FF01-FF5E
의 전폭 ASCII 코드 범위에 있으면 상위 바이트를 사용하여 하위 바이트를 감지하고 조정합니다. 그렇지 않으면 하위 바이트만 사용되고 상위 바이트는 0이 되어 정보가 손실될 수 있습니다. - Lowercase –
LOWERCASE
-
AWS WAF에서 대문자(A-Z)를 소문자(a-z)로 변환합니다.
- MD5 –
MD5
-
AWS WAF는 입력의 데이터에서 MD5 해시를 계산합니다. 계산된 해시는 원시 이진 형식입니다.
- None –
NONE
-
AWS WAF는 텍스트 변환 없이 수신된 웹 요청을 검사합니다.
- Normalize path –
NORMALIZE_PATH
-
AWS WAF는 입력의 시작 부분에 있지 않은 다중 슬래시, 디렉터리 자체 참조 및 디렉터리 역참조를 제거하여 입력 문자열을 정상화합니다.
- Normalize path Windows –
NORMALIZE_PATH_WIN
-
AWS WAF는 백슬래시 문자를 슬래시로 변환한 다음
NORMALIZE_PATH
변환을 사용하여 결과 문자열을 처리합니다. - Remove nulls –
REMOVE_NULLS
-
AWS WAF는 입력에서 모든
NULL
바이트를 제거합니다. - Replace comments –
REPLACE_COMMENTS
-
AWS WAF는 C 스타일 주석(/* ... */)의 각 항목을 단일 공백으로 바꿉니다. 연속으로 여러 번 나타나는 주석은 압축하지 않습니다. 종료되지 않은 주석도 공백(ASCII 0x20)으로 대체합니다. 주석(*/)의 독립형 종료는 변경되지 않습니다.
- Replace nulls –
REPLACE_NULLS
-
AWS WAF는 입력의 각
NULL
바이트를 공백 문자(ASCII 0x20)로 바꿉니다. - SQL hex decode –
SQL_HEX_DECODE
-
AWS WAF에서 SQL 16진수 데이터를 디코딩합니다. 예를 들어 AWS WAF는 (
0x414243
)를 (ABC
)로 디코딩합니다. - URL decode –
URL_DECODE
-
AWS WAF는 URL로 인코딩된 값을 디코딩합니다.
- URL decode Unicode –
URL_DECODE_UNI
-
URL_DECODE
와 비슷하지만 Microsoft 고유의%u
인코딩을 지원합니다. 코드가FF01-FF5E
의 전폭 ASCII 코드 범위에 있으면 상위 바이트를 사용하여 하위 바이트를 감지하고 조정합니다. 그렇지 않으면 하위 바이트만 사용되며 상위 바이트는 0이 됩니다. - UTF8 to Unicode –
UTF8_TO_UNICODE
-
AWS WAF는 모든 UTF-8 문자 시퀀스를 유니코드로 변환합니다. 이는 입력을 정규화하고 영어가 아닌 언어에 대한 거짓 긍정 및 거짓 부정 최소화하는데 도움이 됩니다.