JS => CSRF란?

CHO_velog·2021년 9월 12일
0

CSRF란 무엇일까?

우선 Web Application Security란 무엇일까?
개발자들이 웹사이트나 모바일 어플, 웹 API 등을 만들 때,
해커들의 공격을 막기 위해 보안은 필수 사항이다.

공격에는 여러 가지가 있는데, 그 중 대표적인 세 가지가 있다.
1. SQL injection
2. XSS (Cross-Site Scripting)
3. CSRF (Cross-Site Request Forgery)

이 중 CSRF는
다른 오리진(cross-site)에서 유저가 보내는 요청을 조작하는 것이다.
예를 들어, 이메일에 첨부된 링크를 누르면 내 은행계좌의 돈이 빠져나가는 것.

CSRF는 요청만 조작을 하는 것이고,
해커가 직접 데이터(response)에는 접근할 수 없다.
이는 다른 origin이기 때문에 접근할 수 없는 것이다.


CSRF 공격을 위한 조건

1. 쿠키를 사용한 로그인
유저가 로그인을 했을 때, 쿠키로 어떤 유저인지 알 수 있어야 한다.

2. 예측할 수 있는 요청/parameter를 가지고 있어야 함
request에 해커가 모를 수 있는 정보가 담겨있으면 안된다.


CSRF 공격을 막기 위한 조건

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

2. Same-site cookie 사용하기
같은 도메인에서만 세션/쿠키를 사용할 수 있다.

profile
개발신생아

0개의 댓글