테스트 사이트 - 개발 중인 베타 버전입니다

csrf 방어 session 질문입니다. 채택완료

kmd2410 2년 전 조회 1,942

안녕하세요

csrf 방어에 대해서 제가 적용한 방법이 올바른 방법인지 궁금해서 선생님들께 조언을 구합니다.

 

a.php

</p>

<p># CSRF 토큰생성 또는 가져오기</p>

<p>session_start();</p>

<p> </p>

<p>if (!isset($_SESSION['csrf_token'])) {</p>

<p>    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));</p>

<p>}</p>

<p># CSRF 토큰생성 또는 가져오기</p>

<p> </p>

<p>=> ajax post 전송 a_update.php, csrf_token: '<?php echo $_SESSION['csrf_token'];?>';</p>

<p>

 

 

a_update.php

</p>

<p># CSRF</p>

<p>    session_start();</p>

<p> </p>

<p>    if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {</p>

<p>        session_destroy();</p>

<p>        alert("비정상", G5_URL."/bbs/logout.php");</p>

<p>    }</p>

<p>    # CSRF</p>

<p>

 

 

이렇게 현재 적용을 해놓았는데, 이렇게하면 CSRF 방어에 안전한 방법일까용?

 

선생님들의 조언 부탁드립니다.

 

감사합니다.
 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
A
2년 전

일회용 토큰이라면 맞는 방법입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

k
kmd2410
2년 전
선생님 답변 감사드립니다.
[code]
if (!isset($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
[/code]

혹시 이부분이 보안에 취약할수있을까요?
앞단에서 토큰이 페이지소스보기로 다 보여서 매번 새로운 토큰을 생성되도록 !isset을 지웠는데 이렇게 적용하는게 보안에 더 도움이 되는게 맞나용 ?

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인