본문 바로가기

편안한코딩생활/기타등등

xss, csrf공격이란?

1. xss

공격자의 Javascript 코드를 입력해놓으면 실제 사용자가 동적인 웹 페이지를 클릭하거나 열람할 때 페이지에 의도하지 않은 악성 스크립트가 실행되는 공격 방식 중 하나

게시판 글 작성시 script를 작성하면 , 저 글이 열리면 alert 가 5만번 작동해서 사이트 고장

=> 네이버 제공 오픈소스 : lucy 필터 등으로 스크립트 작성 못하게 거를 수 있음

2.csrf 공격 

CSRF란 사이트 간 요청 위조 (Cross-site request forgery)의 줄임말로 사용자가 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하는 공격을 의미.

차이점:

XSS 공격은 javascript로 클라이언트에서 발생.

CSRF 공격은 서버로의 공격.

하이퍼 링크 속에 관리자만 접속할 수 있는 링크를 넣어서, 저 이미지 클릭시 a href 링크로 연결되어, 정보를 빼갈 수 있음

막는방법

1.요청을 post 방식으로 하게끔 만들면 됨 .하이퍼링크로 공격하는 걸 막을 수 있음 (하이퍼링크는 무조건 get방식)

2.referrer검증

request header에 있는 요청을 한 페이지의 정보가 담긴 referrer 속성 검증하여 차단

, 같은 도메인상에서 들어온 요청이 아니면 차단됨. 근데 이것도 조작 가능

3. csrf토큰 사용:

로그인한 유저에게 토큰이 발급되어, 요청보낼 때 토큰도 반드시 보내야만 요청을 실행시킬 수 있도록하는 방식

스프링 시큐리티가 이걸 해준다.

좋은기능이지만 

우리는 form태그 요청으로 보낸 것이 아니라 스크립트로 데이터를 보냈기 때문에, 테스트 중 시큐리티에 의해 막힐 수 있음

그래서 스프링 시큐리티 config 파일에 csrf().disable()을 건 것!