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