我读了很多这方面的内容,但我仍然不明白。假设我有一个域,其中的表单仅供经过身份验证的用户对某种内容发表评论:
my_form.php
<form action="post_comment.php" method="post">
<textarea name="comment"></textarea>
<input type="hidden" name="csrf_token" value="<?php print $csrf_token; ?>" />
<input type="submit" value="Post" />
</form>
post_comment.php
<?php
if(!isset($_POST['csrf_token']) || !CSRFToken::validate($_POST['csrf_token'])){
print "Invalid CSRF-Token!";
exit;
}
[...]
?>
如果“csrf_token” token 值未发送或无效,post_comment.php 将拒绝任何请求。因此,我们正在阻止攻击者使用我们的 post_comment.php。
但是如何防止攻击者获取/my_form.php,从表单中读取csrf_token值并使用它POST到post_comment.php?我错过了什么?
最佳答案
CSRF token 是随机的,并且每个 session 都是唯一的。因此,攻击者可以获得与他/她自己的凭据链接的此 token 的值,但无法获取与潜在受害者的凭据链接的值。
关于php - CSRF Token保护的意义何在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185299/