HTML Editor
DATE : 2024/1/11
앞서 HTML Entity에서 어떻게 하면 XSS를 막을 수 있는 지, 그 방법에 대해 알아보았다.
하지만 여기..!! HTML Entity를 처리할 수 없는 경우가 존재한다. 😳
What is HTML Editor
HTML Editor는 블로그와 같은 곳에서 볼 수 있는 코드 작성 기능을 말한다.
HTML Editor를 사용해 코드를 작성할 때는 HTML Entity에서 대체 문자로 치환하던 특수 기호를
막을 수 없기 때문에 다른 방안이 필요하다.
HTML Editor를 사용하는 경우, 웬만하면 이 기능을 제거하는 걸 권유하지만
절대 그럴 수 없다면! 다음과 같은 과정을 통해 XSS에 대비해야 한다.
step#1
HTML Entity를 실행할 수 없는 예외적인 경우, XSS를 막기 위한 첫 번째 과정은
HTML Editor에 사용자가 입력한 내용 중 HTML 특수 문자는 모두 대체 문자로 치환하는 것이다.
step#2
모든 HTML 특수 문자를 치환한 상태에서 허용해줄 태그만 식별해 특수 문자로 복원 시킨다.
허용할 태그만 찾아낸다는 건, 특정 태그만 허용되고 나머지는 모두 차단한다는 뜻으로
white list 기반의 필터링이라 할 수 있다.
step#3
되살린 태그에 한해 태그 내에 악용할 수 있는 event handler가 있는 지 확인해
차단해야 하는 event handler는 제거한다.
이때는 step#2와 달리 차단할 event handler에 대해 필터링을 진행하기 때문에
black list 기반의 필터링이 수행된다고 할 수 있다.
HTML Editor를 사용하는 경우에는 이와 같이 3 step을 통해 XSS를 대비해줘야 한다!
이는 HTML Entity를 처리하지 못하는 예외적인 경우였기 때문에 추가적인 과정이 필요한 것이고
그렇지 않은 경우에는 앞에서 살펴봤던 HTML Entity를 적용하면 된다. 👍
Last updated