개인공부/TIL(Today I Learned)

TIL 60일차_ Browser Security: XSS

soon327 2021. 3. 19. 01:55

XSS (Cross-Site Scripting)

XSS(Cross-Site Scriptinig) 이란 웹 애플리케이션에서 일어나는 취약점으로,
웹사이트에 스크립트를 삽입하는 공격기법이다.
공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며,
보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다.

아래는 채팅을 위한 textarea에 스크립트를 삽입한 상황이다.
일부러 XSS 공격을 허용하기위해서 DOM에서 textcontent가 아닌 innerHTML을 사용했다.

이렇게 의도와다르게
스크립트가 삽입되면 사용자는 다양한 보안상의 위협에 노출된다.
자바스크립트의 활용성이 높을수록, 스크립트를 사용하는 해킹의 활용범위도 넓어지기 때문이다.

따라서 이러한 XSS공격을 막기위한 다양한 방법들이 존재한다.
textContent를 사용한다던가,
정규표현식을 사용해서 꺽쇠를 필터해주는 방법 등이 있다.

이번에 사용한 방법은 정규표현식 방법이며,
정규표현식 사용코드는 아래와 같다.

    divElement.innerHTML = username
      .replace(/</g, '&lt;').replace(/>/g, '&gt;');

    pElement.innerHTML = text.replace(/</g, '&lt;')
      .replace(/>/g, '&gt;');

XSS공격에 노출될 가능성이 있는
텍스트 삽입이 가능한 엘리먼트에 정규표현식을 써서 꺽쇠를 필터링해줬다.

방어 성공!

참고: NoirStar Space

'개인공부 > TIL(Today I Learned)' 카테고리의 다른 글

TIL 62일차_Git: .gitignore  (0) 2021.03.21
TIL 61일차_ChatterBox  (0) 2021.03.20
TIL 59일차_error  (0) 2021.03.18
TIL 58일차_ 클라이언트와 서버  (0) 2021.03.17
TIL 57일차_Promise.all  (0) 2021.03.16