교차 사이트 스크립팅 취약점은 2000 년대 초반부터 공격자에 의해 악용되어 왔습니다. 그러나 많은 개발자,시스템 관리자 및 일부 침투 테스터조차도 여전히 심각하게 생각하지 않습니다. 효과적인 웹 응용 프로그램 해커 또는 방어자가 되기 위해서는 공격 방지 방법의 기본 사항을 이해해야 합니다.
크로스 사이트 스크립팅은 공격자가 합법적 인 웹 응용 프로그램 내에서 피해자의 브라우저에 악의적 인 클라이언트 측 코드를 삽입하고 실행할 수있는 웹 응용 프로그램 취약점의 한 유형입니다.
성공적인 공격의 영향과 심각도는 다를 수 있습니다. 세션 하이재킹,토큰 도난,세션 쿠키 도난 및 사이트 간 요청 위조 공격이 발생할 수 있습니다. 이러한 공격은 사용자 계정이 손상 될 수 있습니다.
또한 공격자는 도난 또는 위조된 쿠키를 사용하여 유효한 사용자를 가장할 수 있습니다. 응용 프로그램 내에서 유효한 사용자에게 관리 권한이 있는 경우 공격자는 해당 권한을 사용하여 응용 프로그램의 서버 쪽에서 페이지를 변경하거나 원격 코드 실행을 수행할 수 있습니다.
이 스크립트는 피해자가 페이지를 볼 때 실행됩니다. 이 공격 중 가장 피해가 심한 공격 유형이라고 할 수 있습니다. 공격자가 취약한 웹 응용 프로그램에 직접 악성 자바 스크립트 페이로드를 주입 할 때 예를 들어,웹 브라우저는 주입 된 자바 스크립트 페이로드를 저장합니다. 그런 다음 피해자가 해당 웹 사이트 또는 웹 응용 프로그램을 방문 할 때마다 악성 코드가 실행됩니다.
다음 특수 문자는 악의적으로 악용되지 않도록 항상 필터링하거나 이스케이프 처리해야 합니다:
< |
> |
“ |
‘ |
) |
( |
& |
개발자는 사용자 입력(소스)의 유효성을 검사하고 출력(싱크)을 인코딩해야 합니다. 입력 소스 속성은 돔이 읽는 위치이고,소스는 공격자가 악성 코드를 삽입하여 공격자가 취약점을 악용할 수 있는 위치입니다. 다음 원본 속성은 피해야 합니다:
- 검색
- 해시
싱크는 돔이 웹페이지로 출력되는 입력 소스로부터 악의적인 문자나 코드를 실행하는 지점입니다. 이러한 싱크는 서비스 거부 기반 공격을 방지하려면 피해야 합니다:
- innerHTML
- outerHTML
- 쓰기
하고 싶은 경우에 더 잘 이해하고 방지하기 XSS 공격,구글은 내장 XSS 게임 웹사이트에 대한 배우 이러한 공격의 작동하는 방법과 더 나은 그들을 방지합니다. 이 프로젝트는 또한 웹 보안 전문가들의 공격 방어 능력을 향상할 수 있는 학습 목표를 제공합니다.