Forbidden (403)
CSRF 검증에 실패했습니다. 요청을 중단하였습니다.
이 메세지가 보이는 이유는 폼을 전송할 때 CSRF 쿠키를 필요로 하기 때문입니다.
이 쿠키는 보안상의 이유로 필요하며, 제3자에 의해 당신의 브라우저가 해킹당하고 있지 않다는 것을 보장합니다.
만약 브라우저 설정에서 쿠키를 비활성화 시켰을 경우, 적어도 이 사이트나 '동일-출처' 요청에 대해서는 활성화 시키십시오.
api를 호출 했을때 csrf 에러가 났다.
그래서 csrf란 무엇인가? 어떤 설정을 해줘야 에러가 안나는 것인가 하는 궁금증이 생겨 찾아보았다.
나중에 혹시나 잊어버릴 수 있는 경우를 위하여 이해한 부분은 간단하게 정리해보려고 한다.
CSRF란?
"사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다. 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다."
-위키백과-
이해한 부분을 정리해 보면
Cross Site Request Forery의 약자로 사이트 간 요청을 위조하는 것을 말한다.
1. 사용자가 사이트에 정상적으로 로그인을 한다.
2. 메일이나 게시판에서 사용자를 피싱한다.
3. 피싱을 하여 사용자의 패스워드 변경 요청을 한다.(자동적으로 요청을 한다.)
4. 변경된 패스워드로 접속을 한다.
CSRF를 막기위한 방법
1. referrer 검증:
request의 referre를 확인하여 domain이 일치하는지 확인한다.
2. Security Token 사용:
사용자의 요청에 난수 값을 포함시켜 세션에 저장된 토큰 값과 요청 파라미터에 전달되는 토큰 값이 일치하는 지 검증하는 방법이다.
하지만 두가지 다 xss취약점이 있다면 csrf 공격에 약해진다
xss는 Cross site Scripting으로 권한 없는 사용자가 웹서비스에 스크립트를 삽입하는 공격 기법이다.
xss도 사용자의 입력에 대한 검증이 없기 때문에 발생한다.
3. Double Submit Cookie
Security Token 검증의 한 종류로 세션을 사용할 수 없는 환경에서 사용할 수 있는 방법으로 웹브라우저의 Same Origin 정책으로 인해 자바스크립트에서 타 도메인의 쿠키 값을 확인/수정하지 못한다는 것을 이용한 방어 기법이다.
공격 종류에는 3가지가 있다.
-Persistent XSS:
삽입된 악성 스크립트가 데이터 베이스에 저장이 되고, 저장된 악성 스크립트가 있는 페이지를 사용한 사용자들은 요청하지 않는 페이지로 리다이렉트 되거나 쿠키를 탈취당하는 등의 공격을 받게 된다.데이터 베이스에 저장되어 있기 때문에 지속적인 공격이 가능하여 Persistent XSS라고 한다.
-Reflected XSS:
사용자가 조회를 요청하고 응닶을 받는 상황에 공격이 발생하게 된다. 해커가 XSS취약점이 있는 부분을 파악하여 고의적으로 url을 리다이렉트 하도록 넘기고 의도치 않게 해단 url을 사용한 사용자는 응답값을 해커에게 넘기게 된다.
-DOM based XSS:
Dom based XSS는 서버 측에서 탐지하기가 어렵다 악의적인 스크립트가 포함된 url을 사용자가 요청하여 브라우저를 해석하는 단계에서 발생하는 공격이다. http://www.sonesite.com/page.html@default=<script>~~ 이런 식으로 url뒤에 #을 사용하여 특수문자 뒤에 있는 정보가 서버로 전송되지 않는 기능을 이용하여 공격을 한다.
대응 방안
가장 쉬운 방법은
-XSS를 막아주는 Anti XSS라이브러리를 사용하여 서버단에서 추가를 하고, 각 이용자들도 설치하여 개인적으로도 방어하는 것이 가장 좋다.
-웹 공격에 특화된 박화벽을 사용하여 XSS 공격과 각종 injection 공격을 방어할 수 있다.
'개인공부' 카테고리의 다른 글
[사이드 프로젝트] 홈페이지 및 어드민 개발 (0) | 2023.09.01 |
---|---|
[SQL] 기본 명령어02 (0) | 2021.07.09 |
[React]기초 문법 (0) | 2021.06.30 |
[운영체제] 시스템 구조 (0) | 2021.06.23 |
[운영체제]운영체제 개념 및 컴퓨터 시스템 구조 (0) | 2021.06.23 |