-2
웹 응용 프로그램의 보안 문제를 해결하기 위해 노력하고 있습니다. 그리고 나는 CSRF를 다뤄야 만합니다. 많은 refrences를 거쳤지만 일부는 쿠키을 사용하고 다른 용도는 세션입니다.CSRF 방지를 위해 세션 또는 쿠키를 저장할 토큰이 더 좋습니다.
웹 응용 프로그램의 보안 문제를 해결하기 위해 노력하고 있습니다. 그리고 나는 CSRF를 다뤄야 만합니다. 많은 refrences를 거쳤지만 일부는 쿠키을 사용하고 다른 용도는 세션입니다.CSRF 방지를 위해 세션 또는 쿠키를 저장할 토큰이 더 좋습니다.
CSRF 방지를 위해 클라이언트 과 모두에 공유 토큰을 저장해야하므로 클라이언트가 요청할 때 제출 된 값을 알려진 값과 비교할 수 있습니다.
클라이언트 측 당신이 쿠키, 또는 숨겨진 양식 필드를 사용할 수 있습니다 (개인적으로는 숨겨진 필드를 선호 - 그래서 클라이언트 브라우저에서 모든 형태의 쿠키를 쌓아하지 않음). 당신이 (세션 ID 어쨌든 쿠키에 저장 됨) 세션를 사용하거나 당신은 아마 기록을 확인하는 세션을 사용할 필요가 거라고하지만 (데이터베이스에 저장할 수서버에서
그 클라이언트에 속함).
다음은 CSRF 예방 코드의 예입니다.
session_start();
if (isset($_POST) && isset($_POST['csrf'])) {
var_dump($_POST, $_SESSION);
if ($_POST['csrf'] == $_SESSION['CSRF_FORM1']) {
print 'You win cookies!';
}
else {
print 'You win a bucket of vomit!';
}
}
$_SESSION['CSRF_FORM1'] = md5(microtime());
?>
<form action="" method="post">
<input type="hidden" name="csrf" value="<?php print $_SESSION['CSRF_FORM1']; ?>" />
<input type="submit" value="Good form Jack!" />
</form>
<form action="" method="post">
<input type="hidden" name="csrf" value="badValue" />
<input type="submit" value="Bad form Jack!" />
</form>
세션에서도 쿠키를 사용합니다. 그리고 그 질문을 조금 더 확장하려고 노력해야합니다. 당신이 가진 좀 더 많은 배경과 실제 관심사/질문을 말해야합니다. – deceze