CSRF에 대한 기사를 많이 읽었습니다. 거의 모든 솔루션에는 숨겨진 토큰과 동일한 솔루션이 있으므로 CSRF를 방지하는 코드를 작성했으며 이후에 내 페이지를 해킹하려고했지만 작동하지 않았습니다. , 내 코드 CSRF 방탄 경우, 그리고 어쨌든 주위에 있는지 알고 싶습니다.CSRF PHP 예방 메커니즘
내가 한 나는 다음과 같은 작성합니다 각 페이지에 있도록 그들의 형태를 가지고 네 페이지 :
if (isset($_POST['submit'])){
// Check for CSRF token
if ($_SESSION['token'] === $_POST['token']){
// write to db
}else{
// CSRF attack has been detected
die("CSRF :<br>1: $_SESSION[token] <br> 2: $_POST[token]");
}
}else{
// assign CSRF prevention token
$form_token = md5((rand(1,89412) * 256/4).$date.time());
$_SESSION['token'] = $form_token;
}
?>
<form action='' method='post'>
<input type='hidden' name='token' value='<?echo $form_token;?>'>
이 방법은 내 웹 사이트에 CSRF를 사용하는 공격자를 막을 충분한 것입니까?
고맙습니다.
구성 파일이 자동으로로드 require
또는 include
기능을 사용하여 모든 페이지에 있어야
의 config.php :
이 "블라인드"를 게시에서 방지하거나 자동화 된 형태는 예방 공격의 한 부분입니다 ... 제출합니다. 세션 (id)도 안전해야 세션 쿠키와 마찬가지로 하이재킹 될 수 없습니다. – djot
내 웹 사이트가 여전히 CSRF에 취약하다는 의미입니까? 그렇다면 어떻게 방지 할 수 있습니까? – user2585384
글쎄, 나는 보안 전문가가 아니지만 ... 당신의/사용자 세션 아이디를 납치 할 수 있다면 폼 토큰은 쓸모가 없다. – djot