본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


웹 취약점(Web vulnerability)

11. 크로스 사이트 스크립팅(XS, XSS, Cross Site Scripting)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2021. 12. 2.

 

취약점에서 가장 많이 시도되며 유명한 크로스 사이트 스크립팅 입니다.

웹 환경에서 다른 최종 사용자의 클라이언트에서 임의의 스크립트가 실행되는 취약점 입니다.

웹 사이트 게시판, 댓글 ,자료실 등에 정상적인 콘텐츠 대신에 악성 콘텐츠를 주입하여 실행 될 경우 사용자가 원본 콘텐츠 대신 악성코드 감염 및 웹 페이지 변조 등 사용자에게 악의적인 영향을 미칠 수 있는 악성 콘텐츠를 열람할 수 있게 할 수 있습니다.

 

크로스 사이트 스크립팅을 대비한다는 것은 한마디로 압축하면,

브라우저의 명령어가 일반 글씨로 저장되어 다른사람의 브라우저에서 실행되지 못하게 하는 것을 의미 합니다.

내가 만든 게시판에서 누군가 게시판 글을 저장하고, 해당 글 내용이 실행 되지 않게 하여야 합니다.

 

예를 들어 아래 코드가 게시글로 저장되고 브라우저에서 알림(alert)이 뜬 다면 해당 페이지는 취약한 기능 입니다.

<script>alert(1234)</script>

 

 

#방법1

이를 대비하기 위해서는 사용자의 요청에 대해서 필터링 하는 기능을 만들어야 합니다.

그런데 다양한 방법과 패턴이 존재 하므로 이를 수동으로 만드는 것은 다소 어려울 수 있기 때문에 이미 잘 만들어진 라이브러리를 사용 한다면 쉽게 해결 가능합니다.

Java에서 적용 가능한 멋진 lucy 필터 입니다.

https://github.com/naver/lucy-xss-servlet-filter

 

GitHub - naver/lucy-xss-servlet-filter

Contribute to naver/lucy-xss-servlet-filter development by creating an account on GitHub.

github.com

 

위 필터는 네이버 형(?)님들이 만들어준 기능으로, 스크립트 형식의 요청에 대해서 필터를 하여 줍니다.

사용법이나 적용, 예외처리하는 방법이 매우 간단하므로 해당 필터를 사용하면 XSS 공격에 쉽게 대비 할 수 있습니다.

 * lucy필터는 파일요청(Multipart)에 대해서는 추가 설정을 통해야만 가능 합니다.

 * 적용기 : https://myhappyman.tistory.com/253

 

 

이상으로 표준취약점중 1가지인 크로스 사이트 스크립팅(Cross Site Scripting)에 대해서 간단하게 살펴보았습니다.

궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글