공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠 삽입, 피싱 공격을 진행하는 것을 말한다. XSS 공격은 스크립트 언어와 취약한 코드를 공격 대상으로 한다.
XSS는 웹사이트에 악성 스크립트를 주입하는 행위를 말한다. 사람들이 신뢰하는 사이트에 악성 스크립트를 주입하고, 악성 스크립트가 포함된 게시글을 열람한 피해자들의 쿠키는 해커들에거 전송된다. 이를 통해 해커는 피해자의 브라우저에서 스크립트를 실행해 공격을 한다.
XSS는 스크립트 언어와 취약한 코드를 대상으로 하며 주 목적은 사용자의 정보를 도용하는 것이다.
(+) 서버에서 CSP(Content-Security-Policy)정책을 설정하여, 허용된 스크립트만 실행되도록 제한
(+) HTTP 대신에 신뢰할 수 있는 HTTPS를 사용하여 통신 프로토콜을 암호화
크로스 사이트 요청 위조는 데이터의 값을 변경하는 요청을 대상으로 한다. (ex. 제품 구입, 계정 설정, 기록 삭제, 비밀번호 변경, 문자 전송 등)
공격자가 원하는 요청을 위조한 후, 이메일이나 웹사이트에 요청이 삽입된 하이퍼링크를 심어놓는다. 사용자가 해당 하이퍼링크를 클릭하면 요청이 자동으로 전송된다.
XSS(크로스 시아트 스크립팅)과 크로스 사이트 요청 위조는 사용자의 브라우저를 대상으로 한다는 공통점이 있다.
그러나 CSRF는 사용자의 인증된 세션을 악용하는 공격 방식이고 XSS는 인증된 세션 없이도 공격을 진행할 수 있다는 차이점이 있다.
XSS는 사용자가 특정 사이트를 신뢰한다는 사실을 이용한 공격 방식, CSRF는 웹 어플리케이션이 인증된 사용자의 요청을 신뢰한다는 사실을 이용한 공격 방식이다. 또한 XSS는 사용자에서 스크립트가 실행되지만 CSRF는 서버에서 스크립트가 실행된다는 차이점이 있다.
XSS는 사용자의 컴퓨터에서 스크립트를 실행해 사용자의 정보를 탈취하는 것을 목적으로 하는 반면에 CSRF는 요청을 위조해 사용자 몰래 송금과 제품 구입 등 특정 행위를 수행하는 것을 목적으로 한다.
웹 어플리케이션들은 CSRF 공격을 방지하기 위해 CSRF 토큰을 통해 요청이 사용자가 전송하는 것이 맞는지 확인하거나 재인증을 요구하는 등의 조치를 취하고 있다.