CSRF

katsukichi·2021년 4월 14일
0

CodeStates_IM

목록 보기
46/48

Web Application Security

개발자들이 웹사이트 모바일 어블 , 웹 api등을 만들때 해커들의 공격을 막기위해서 보안은 필수사항

SQL injection

XSS

CSRF

CSRF

Cross Site Request Forgery

  • 다른 오리진(cross-site)에서 유저가 보내는 요청(request)을 조작 (forgery)하는것

ex) 이메일에 첨부된 링크를 누르면 내 은행 계좌의 돈이 빠져나감

  • 해커가 직접 데이터를 접근할 수 없다.

ex) 다른 오리진이기 때문에 response에 직접 접근할 수 없음

CSRF 공격을 하기 위한 조건

  • 쿠키를 사용한 로그인
    유저가 로그인 했을때, 쿠키로 어떤 유저인지 알 수 있어야함
  • 예측할수있는 요청/parameter를 가지고 있어야함
    request에 해커가 모를 수 있는 정보가 담겨있으면 안됨

GET요청으로 CSRF공격하기

계좌이체에 사용되는 GET요청

김코딩이 로그인을했다 은행에 ( 세션이살아있고, 쿠키에 개인정보가 담겨있다 )

김코딩이 계좌이체를 했는데 그때 정보를 가로채서 해커의 계좌번호로 바꿔서 준비를했다면

이제 김코딩에게 악성 스팸메일을 보내서 김코딩이 그 요청을 누르게 하면된다.

서버입장에서는 김코딩의 컴퓨터에서 김코딩이 계좌이체를 정상적으로 진행하는것으로 보여지므로 막지않는다.

post요청으로 csrf공격하기

post요청은 바디에 있어서 공격이좀 어렵긴하지만

해커가 개인이 만든 사이트가 로딩이 되면 비밀번호를바꾸는 Post요청을 보낸다.

CSRF 막는방법

  • CSRF토큰 사용하기

서버측 에서 CSRF공격에 보호하기위한 문자열을 유저의 브라우저와 웹 앱에만 제공

  • Same-site cookie 사용하기

같은 도메인에서만 세션/쿠키를 사용할수있다.

profile
front-back / end developer / Let's be an adaptable person

0개의 댓글