크로스사이트 스크립팅(XSS)
(Cross-site scripting)
개념
공격자가 공격하려는 사이트에 스크립트를 넣는 취약점입니다.
공격자가 게시판 같은 곳에 악의적인 스크립트를 심고 타 사용자가 해당 게시물을 확인할 경우 발생합니다.
발생 원인
사용자 입력 값에 대한 필터링이 제대로 이루어지지않아 발생합니다.
위험한 이유
악의적인 스크립트를 삽입하여 사용자의 쿠키(세션)을 탈취하여 도용하거나 Redirect를 할 수 있으며 CSRF공격의 베이스로 활용될 수 있습니다.
조치 방법
- 웹 사이트에 사용자 입력 값이 저장되는 페이지는 공격자가 웹 브라우저를 통해 실행되는 스크립트 언어를 사용하여 공격하므로 해당되는 태그 사용을 사전에 제한하고, 사용자 입력 값에 대한 필터링 작업이 필요합니다.
- 게시글의 본문뿐만 아니라 제목, 댓글, 검색어 입력 창, 그 외 사용자 측에서 넘어오는 값을 신뢰하는 모든 form과 파라미터 값에 대해서 필터링을 수행합니다.
- 입력 값에 대한 필터링 로직 구현 시 공백 문자를 제거하는 trim, replace 함수를 사용하여 반드시 서버 측에서 구현되어야 합니다.
- URLDecoder 클래스에 존재하는 decode 메소드를 통해 URL 인코딩이 적용된 사용자 입력값을 디코딩함으로써 우회 공격을 차단합니다.
- 웹 방화벽에 모든 사용자 입력 폼을 대상으로 특수문자, 특수 구문을 필터링하도록 룰셋을 적용합니다.
추가 정보
XSS가 성공할 경우 CSRF가 성공할 가능성이 높습니다.
XSS는 클라이언트(공격자)-클라이언트(피해자)의 느낌이고 CSRF는 클라이언트(피해자)-서버로 도달하는 공격으로 두 취약점에는 차이가 있습니다.
'주요정보통신기반 시설 가이드' 카테고리의 다른 글
불충분한 인증이란? (0) | 2024.03.17 |
---|---|
약한 문자열 강도란? (0) | 2024.03.17 |
악성 콘텐츠란? (0) | 2024.03.17 |
정보 누출이란? (0) | 2024.03.17 |
디렉터리 인덱싱이란? (0) | 2024.03.17 |