작성
·
767
1
일반적인 input 입력이 아닌 에디터를 사용하여 입력받고 에디터가 아닌곳에 노출이 필요한경우
XSS 대응을 어떻게 해야할까요?
예를들어 CKEditor를 사용하는 경우 HTML를 직접 입력받거나 img, iframe 등 지원 하는 기능이 많은데
이러한 입력값에 악성 스크립트가 심어져있는지 어떻게 검증해야 할까요?
저장시 Lucy를 이용하여 변환시키긴 하는데
저장 데이터가 보여져야 할곳이 CKEditor영역이 아닌 HTML태그영역에 직접적으로 노출시킬때
다시 변환을 되돌리지 않으면 변환된 값이 노출되고, 변환을 되돌리면 심어놓은 스크립트가 작동합니다.
사용할 태그들을 화이트리스트로 작성하여 제외시키는것 말고는 별다른 대응방안이 없을까요?
답변 1
1
XSS를 대응하기는 참 까다롭고 웹 해킹 중에 가장 어렵다고 볼 수 있습니다.ㅠ
에디터를 이용하는 경우는 HTML 태그를 사용한다는 전제 조건이 붙으며, 이에 따라 XSS 검증을 위한 보안 라이브러리가 필요합니다. 직접 구현하기에는 상당히 번거롭습니다.
img, iframe 등의 태그에 악성 스크립트가 담겨져 있는 경우를 확인하기 위해 보안 라이브러리를 사용하며, 이를 필터링해야 됩니다. 만약, 보안 라이브러리를 사용하는데도 악성 스크립트가 실행된다면, 보안 라이브러리 구동 여부 확인 그리고 보안 라이브러리 사용법을 잘 숙지해서 사용을 하셔야 하고 이렇게 해도 만약 실행된다면 해당 태그는 막지 못해서 보안 라이브러리 측에 문의를 해서 패치를 요구하는 방법이 있습니다.
그리고 XSS의 경우는 블랙리스트로 막기는 정말 어렵습니다. 화이트/블랙의 경계가 모호하기 때문에 보통 화이트리스트로 사용해도 이상이 전혀 없는 태그, 이벤트 헨들러를 허용하고 img 태그 같이 모호한 태그는 허용은 하되 속성에 어떤 값들이 있는지 검증 절차가 구현 되어야 합니다.
이렇듯, 까다롭기 때문에 보안 라이브러리를 사용할 수 밖에 없구요..ㅠ