자바스크립트 공격의 일종이다. input창 등에 개발자가 의도한 코드 외의 코드를 주입하여 의도적으로 공격하는 방식으로 사이트에 부하를 주거나 오류를 발생시킬 수 있다.
간단하게 < 나 <Script> 를 막아서 해결할 수 있다. 간단한 공격이기 때문에 XSS 공격을 막을 수 있는 Lucy XSS Filter와 같이 공격을 방어할 수 있는 Java 라이브러리 등을 쉽게 구할 수 있다.
해커가 관리자의 권한을 이용해서 특정 코드를 실행하게 유도해서 의도한 행위(수정, 삽입, 삭제 등)을 하도록 하는 공격. 가령 이미지 파일 등에 a태그를 통해 특정한 정보를 수정하는 컨트롤러를 유도하는 식이다.
이를 해결하기 위해서는
중요한 정보를 다룬 데이터의 전송 방식은 GET방식이 아닌 POST방식으로 다룬다.
Referrer검증을 이용한다. 같은 도메인 상에서 요청이 들어오지 않으면 차단하는 방법이다.
CSRF 토큰을 사용한다. 랜덤한 수를 사용자의 세션에 저장해서 모든 요청에 대해 서버단에서 검증하는 것이다.
HttpSession session = request.getSession();
session.setAttribute("CSRF_TOKKEN", UUID.randomUUID().toString());
// UUID : 소프트웨어 구축에 쓰이는 식별자 표준