이스케이프 처리
"이스케이프"란 마크업 언어, 프로그래밍 언어 또는 스크립트 언어에서 특별한 의미를 지닌 문자나 기호를 안전하게 처리할 수 있는 다른 문자열로 변환하는 과정을 말합니다.
예를 들어 HTML에서 <와 > 문자는 태그를 나타내는 데 사용하도록 예약되어 있습니다. 이러한 문자가 HTML에 직접 나타나면 웹 브라우저는 이를 일반 텍스트가 아닌 마크업으로 해석합니다. 따라서 이 기호를 일반 텍스트로 표시하려면 <는 <, >는 >와 같은 이스케이프 시퀀스로 작성해야 합니다. 브라우저는 이러한 이스케이프 시퀀스를 만나면 원래 문자(<와 >)로 화면에 표시합니다. 이러한 변환 과정을 "이스케이프"라고 합니다.
이스케이프 처리는 웹 보안에서 특히 중요합니다. 이는 웹 양식을 통해 입력된 사용자 데이터를 안전하게 처리하기 위한 관행인 "새니타이제이션(sanitization)"의 핵심 요소입니다.
예를 들어, 양식에서 사용자 입력을 받아 다음 페이지에 그대로 표시하는 웹 애플리케이션을 생각해 보겠습니다. 사용자가 다음과 같은 내용을 입력했다고 가정해 보겠습니다:
<script>alert("안녕하세요!");</script>
웹 애플리케이션이 이 문자열을 이스케이프 처리하지 않고 결과 페이지에 직접 포함하면, 브라우저는 이를 JavaScript 코드로 해석하여 실행합니다. 그 결과 웹사이트 제작자나 관리자가 의도하지 않았음에도 "Hello!"라는 메시지가 표시된 팝업 알림창이 나타납니다. 이 간단한 스크립트 자체는 큰 피해를 일으키지 않을 수 있지만, 제3자가 웹 페이지에 임의로 스크립트를 삽입할 수 있다는 것은 심각한 문제이며, 사이트가 크로스 사이트 스크립팅(XSS) 공격 및 기타 보안 위협에 노출될 수 있습니다.
이를 방지하려면 웹 애플리케이션은 이러한 데이터를 표시하기 전에 특수 문자를 올바르게 이스케이프해야 합니다. <와 >를 각각 해당 이스케이프 시퀀스(<와 >)로 바꾸면 악성 스크립트는 다음과 같은 문자열로 안전하게 표시됩니다:
<script>alert("안녕하세요!");</script>
이 형식에서는 브라우저가 이를 엄격하게 텍스트로 처리하므로, 모든 스크립트가 무력화되고 의도치 않은 동작을 유발하지 않은 채 원래 의도대로 표시됩니다.
대부분의 최신 웹 애플리케이션 개발 언어와 프레임워크에는 문자열을 적절히 이스케이프하는 기능이 내장되어 있습니다. 하지만 복잡한 웹 애플리케이션에서 모든 입력이 올바르게 이스케이프되었는지 확인하고 문제가 있는 요소를 찾아 수정하려면 상당한 시간과 노력이 필요할 수 있습니다. 이 문제를 해결하는 매우 효과적인 방법은 웹 애플리케이션 방화벽(WAF)을 사용하는 것입니다. WAF는 사용자가 제출한 입력이 웹 애플리케이션에 도달하기 전에 이스케이프되도록 보장합니다.
F5는 F5 BIG-IP 솔루션을 통해 WAF 기능을 제공합니다.

