一种方法是在HTML中插入一个特定于用户会话的秘密变量.这可以防止跨站点伪造.
在PHP中,您将生成一个随机的"密钥"并将其存储在会话中:
$_SESSION['myFormVar'] = md5(mt_rand());
Run Code Online (Sandbox Code Playgroud)
然后在表单中,您将添加为隐藏变量:
<input type="hidden" name="chkVar" value="<?=$_SESSION['myFormVar']?>"/>
Run Code Online (Sandbox Code Playgroud)
您应该通过POST提交表单,最好通过HTTPS提交表单,这样可以更难(但不是不可能)拦截chkVar的值.
在处理已发布表单的代码中,将发布的chkVar与会话变量进行比较.在一个理想的世界中,每个请求都有一个独特的chkVar,但是使用一个相同的整个会话通常可以正常工作并防范大多数csrf攻击.