크로스 사이트 스크립팅 (XSS)
크로스 사이트 스크립팅(XSS, Cross-Site Scripting)이란 관리자가 아닌 이가 웹페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 다른 유저의 클라이언트에서 임의의 스크립트가 실행되는 것이며, 크로스 사이트 스크립팅은 웹 페이지가 사용자에게 입력 받은 데이터를 검사하지 않고 그대로 동적으로 생성된 웹 페이지에 포함하여 사용자에게 재전송할 때 발생한다.
주로 자바스크립트와 같이 동적 제어를 할 수 있는 언어로 작성되며, 이러한 언어로 작성된 악성 스크립트 코드를 웹페이지, 웹 게시판 또는 이메일에 포함시켜 사용자에게 전달한다. 해당 웹 페이지나 이메일을 사용자가 클릭하거나 읽을 경우 악성 스크립트 코드가 웹 브라우저에서 실행되는 것이다.
이렇게 XSS 취약점을 예방할 조치를 해두지 않았다면 웹 사이트를 이용해 자신이 만든 악의적인 스크립트 코드를 일반 유저의 컴퓨터에 전달하여 실행시킬 수 있다. 이를 통해 사용자 쿠키나 세션 토큰 등의 민감한 정보를 탈취할 수 있다.
XSS 취약점 점검 방법
먼저 게시판에 글쓰기와 같이 단문이상의 입력이 가능한 부분에 실행 가능한 형태의 스크립트 태그를 입력해 태그가 실행되는지 확인한다. 보통은 alert()를 이용한 스크립트 태그나 이벤트 속성, 공백문자의 인코딩을 통한 내용 난독화, 스크립트 난독화 등의 방법으로 스크립트 태그를 작성하므로 이에 대한 방지 조치를 취해야 한다. 만약 테스트로 입력한 스크립트 태그가 브라우저 화면에 표시되어 실행된다면 XSS 취약점에 걸린 것이다.웬만해서는 script 코드가 실행되지 않는 입력 부분을 만드는 게 좋은데, 이또한 {{{!html HTML}}} 을 이용해 HTML 태그를 사용할 수 있다. 간단하게는 script의 '<', '>' 꺽쇠를 다른 문자로 인식시켜 HTML 코드로 인식하지 못하도록 하는 것이다. 워낙에 다양하게 XSS를 침해할 수 있으므로 여러가지 방법으로 빠짐없이 조치 해두는 게 좋다.
생각보다.. 웹은 많이 취약하다..
'Today I Learned' 카테고리의 다른 글
[파이썬을 이용한 웹 크롤링과 스크레이핑] URL과 퍼머링크 (0) | 2021.07.12 |
---|---|
[TIL] 210507 - 파이썬 for ~ else문, gcd 알고리즘 (0) | 2021.05.07 |
[TIL] 검색엔진 작동원리, 네이버의 라이브 검색 (0) | 2021.01.11 |
[TIL] 쇼단(Shodan)과 센시스(Censys)로 웹 보안취약점 체크 (1) | 2021.01.10 |