[Server] CSRF 공격 조건 및 예방 방법
Web application Security
- 개발자들이 웹사이트, 모바일 어플, 웹 API 등을 만들 때에 해커들의 공격을 막기 위해 보안은 필수 사항
- 여러가지 공격들 : SQL Injection, XSS, CSRF
CSRF
- Cross Site Request Forgery
- 다른 사이트(cross-site)에서 유저가 보내는 요청(request)을 조작(forgery)하는 것
*예시 : 이메일에 첨부된 링크를 누르면 은행 계좌의 돈이 빠져 나감
- 해커가 직접 데이터에 접근할 수 없음
*다른 사이트이기 때문에 response에 직접 접근할 수 없음
1. 공격 조건
- 쿠키를 사용한 로그인 : 유저가 로그인 했을 때, 쿠키로 어떤 유저인지 알 수 있어야 함
- 예측할 수 있는 요청/parameter를 가지고 있어야 함 : request에 해커가 모를 수 있는 정보가 담겨 있으먄 안됨
2. 공격 방지
- CRSF 토큰 사용하기 : 서버측에서 CSRF 공격을 보호하기 위한 문자열을 유저의 브라우저와 웹 앱에만 제공
*이 조합으로 생성된 요청에만 성공적으로 응답을 해주는 방식
- Same-Site Cookie 사용하기 : 같은 도메인에서만 세션, 쿠키를 사용할 수 있도록 만듦
*같은 도메인에서 온 요청이 아니면 받아주지 않음