보안 (XSS)
에디터가 거르는 것과 서버에서 꼭 다시 걸러야 하는 이유.
82editor는 setHTML, 붙여넣기, 끌어다 놓기, 소스 보기에서 들어오는 모든 HTML을 허용 목록으로 거릅니다. script·style 태그, on* 속성, javascript: 주소, 허용되지 않은 iframe은 남지 않습니다.
서버에서 거르기
| 언어 | 추천 라이브러리 |
|---|---|
| PHP | HTML Purifier |
| Node | DOMPurify + jsdom, 또는 sanitize-html |
| Java | OWASP Java HTML Sanitizer, jsoup Safelist |
| Python | nh3 (bleach 후속) |
허용 목록은 에디터와 맞추면 됩니다. 82editor 출력에 쓰이는 태그: p br div span h1-h6 strong em u s sub sup code pre blockquote ul ol li a img figure figcaption table thead tbody tr th td caption colgroup col hr mark nav iframe font. 속성은 style(글자색·크기·정렬·줄간격 등), href, src, alt, colspan, rowspan, data-checklist, data-checked, data-video. iframe 은 YouTube·Vimeo·네이버TV·카카오TV·Dailymotion 주소만.
보기 화면
- 저장한 HTML을 보여 줄 때도 Content-Security-Policy 로 인라인 스크립트를 막아 두면 한 겹 더 안전합니다.
- 외부 링크에는
rel="noopener nofollow ugc"를 붙이세요 (82editor는 새 창 링크에 noopener를 붙입니다).