php形式:使用令牌防止外部海报

时间:2011-08-03 23:51:11

标签: php webforms security

我正在制作一个有趣的网页游戏,有很多表格可以将数据发布到php页面。哪些方法可以阻止人们使用自己的网络表单发布到我的网站?

我的知识PHP并不太先进。所以,虽然我一直在研究这个话题,但遗憾的是我发现的答案让我感到困惑。我从前面发现了这个问题来解决这个问题:Secure ajax form POST。我对第一个答案感到有点困惑,并且想知道是否有人可以在PHP中提供一个例子。我正在努力解决的一些具体问题是:

  • 如何在服务器上的某处保存令牌?
  • 你如何决定该令牌应该是什么?
  • 如果有人在网站上,他们不能只查看来源和 在隐藏的输入元素中查看令牌并在其自己中使用它 第三方表格?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用许多CSRF预防库。一个是CSRFGuard at OWASP

您可能还希望阅读main CSRF page以了解问题,并阅读CSRF Prevention Cheat Sheet以了解实施设计背后的原则。

如果您已经阅读并理解了这些问题,那么如果您希望构建自己的实现,那么添加自己的保护应该是一项简单的工作。

请记住,如果您有XSS vulnerabilities,则可以简单地绕过您的CSRF保护。所以一定要了解XSS Prevention

答案 1 :(得分:1)

  1. 令牌与失效日期/时间一起存储在用户会话中
  2. 可以按用户自动生成令牌。它需要足够随机以避免猜测。
  3. 是的,但您可以通过使用每用户令牌生成和到期来解决此问题。如果在没有现有用户会话的情况下提交令牌,或者当前会话中的令牌已过期,请将用户重定向到适当的失败通知。