我正在努力防止CSRF攻击。我在会话和表单中存储了一个随机值。处理表单时,我会比较这两个值。 如果会话和表单值不相等,我应该杀死脚本还是有更好的方法来处理它?</ p>
答案 0 :(得分:0)
如果真的用户不太可能发生这种情况,那么我会阻止脚本保存/返回任何数据,但我会返回一条“成功”消息,就好像它已经有效一样。如果您返回失败,它可以帮助黑客解决您的验证编码方式。
另一方面,如果真实用户遇到这种情况,我会返回友好错误,并可能要求他们重新登录。
答案 1 :(得分:0)
是。让它失败。恢复此类错误毫无意义。
但是,您应该编写一个日志条目来审核潜在的漏洞利用尝试:
syslog(LOG_ERR, "CSRF token mismatch ...");
die("Request failed. (Disabled cookies?) Contact administrator: ...");
包含一个可识别的可读消息,以防它真的是浏览器错误或其他什么。但是不要暴露它是失败的CSRF令牌。