[Spring Boot] CSRF

Coco Park·2024년 1월 10일
0

Spring_Boot

목록 보기
9/13

CSRF(Cross-Site Request Forgery)

: 해당 URL을 사용자의 의도와는 관계없이 공격자가 원하는 방식의 공격을 URL을 호출함으로써 시도하는 방법을 말한다.

이를 해결하기 위해서는 해당 URL이 정당한 경로를 거쳐서 호출되었는지를 판단할 필요가 있는데, 이를 위해서는 csrf token을 활용하게 된다.

이는 get 방식의 호출이 아니라면 반드시 명시해야 하는 것으로써 post 방식과 같은 호출을 하고자 할 때, token을 함께 서버로 전송함으로써 판단하게끔 하는 것이다.

1) view에서의 전달

<form action="/joinProc" method="post" name="joinForm">
    <input type="text" name="username" placeholder="username"/>
    <input type="password" name="password" placeholder="password"/>
    <input type="hidden" name="_csrf" value="{{_csrf.token}}"/>
    <input type="submit" value="login"/>
</form>

2) ajax에서의 전달

<meta name="_csrf" content="{{_csrf.token}}"/>
<meta name="_csrf_header" content="{{_csrf.headerName}}"/>

ajax에서 호출 시에는 content명으로써 불러온 후 요청하며

JavaScript에서 XMLHttpRequest 요청시 setRequestHeader를 통해 _csrf, _csrf_header Key에 대한 토큰 값 넣어 요청하게된다.

csrf가 enable되어있는 상태에서 csrf를 명시하지 않고 get 방식 외의 호출을 하게 되면 서버에서는 공격자로 판단하여 해당 URL 호출을 승인해주지 않게 된다.

profile
ヽ(≧□≦)ノ

0개의 댓글