-
innerHTML을 왜 지양해야 하는가?WHY? 2022. 8. 11. 22:40반응형
1. xss공격에 취약함
1.1 xss란(Cross-Site Scripting)
XSS는 Cross-Site Scripting의 약자로 웹 서비스에 Javascript 등 스크립트를 실행할 수 있는 코드를 삽입하여 다른 사용자 등에게 공격자가 의도한 스크립트를 실행하게 하는 공격 방법입니다.
1.2공격 종류 및 방법
1.2.1 Persistent(or Stored) XSS
Persistent XSS는 지속적으로 피해를 입히는 XSS공격입니다. 주로 게시판같이 사용자가 입력한 값이 데이터베이스에 저장 되는 곳에 발생을 하며, 데이터베이스에 저장된 XSS 악성 스트립트는 사용자가 게시글을 읽으면 코드가 작동되어 쿠키를 탈취당하거나 다른 사이트로 리다이렉트 되는 공격을 받습니다.
1.2.2 Reflected XSS
Reflected XSS공격은 검색, 조회 기능 같은 사용자에게 입력 받은 값을 서버에서 되돌려 주는 곳에서 발생합니다. 그래서 링크를 클릭한 사용자는 해커에게 본인의 의도와 상관없이 자신의 쿠키 값을 전송합니다.
1.2.3 DOM based XSS
DOM based XSS 는 악의적인 스크립트가 포함 된 URL을 사용자가 요청하게 되어 브라우저를 해석하는 단계에 발생하는 공격입니다. 악의적인 스크립트로 인해서 클라이언트 측 코드가 원래 의도와는 다르게 실행됩니다. 그래서 다른 XSS 공격과는 다르게 서버에서 탐지가 어렵습니다.
2.DOMPurity 라이브러리 사용을 권장함
https://www.npmjs.com/package/dompurify
참고
https://velog.io/@kkojae91/innerHTML%EC%9D%84-%EC%A7%80%EC%96%91%ED%95%98%EC%9E%90
'WHY?' 카테고리의 다른 글
[Ubuntu] PPA란? (1) 2023.02.01 npm install할 때 --save옵션을 쓰는 이유는? (0) 2022.07.18