Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php表单:使用令牌阻止外部海报_Php_Webforms_Security - Fatal编程技术网

php表单:使用令牌阻止外部海报

php表单:使用令牌阻止外部海报,php,webforms,security,Php,Webforms,Security,我正在做一个有趣的网络游戏,有很多表单将数据发布到php页面。有哪些方法可以防止人们使用自己的web表单发布到我的网站 我的PHP知识不太先进。所以,当我研究这个话题的时候,不幸的是,我发现的答案让我有点困惑。我发现前面的问题解决了这个问题:。第一个答案让我有点困惑,我想知道是否有人可以提供一个PHP示例。我正在努力解决的一些具体问题是: 如何将令牌保存在服务器上的某个位置 您如何决定该令牌是什么 如果有人在网站上,他们不能只查看源代码和 在隐藏的输入元素中查看标记,并在自己的元素中使用该标记

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

我的PHP知识不太先进。所以,当我研究这个话题的时候,不幸的是,我发现的答案让我有点困惑。我发现前面的问题解决了这个问题:。第一个答案让我有点困惑,我想知道是否有人可以提供一个PHP示例。我正在努力解决的一些具体问题是:

  • 如何将令牌保存在服务器上的某个位置
  • 您如何决定该令牌是什么
  • 如果有人在网站上,他们不能只查看源代码和 在隐藏的输入元素中查看标记,并在自己的元素中使用该标记 第三方表格
谢谢你的帮助

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

  • 您可以使用许多CSRF预防库。一是

    您可能还希望阅读,以了解问题,并了解实现设计背后的原则

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


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

    乔治,谢谢你的快速回复。我仍然不太理解令牌方法。那么,您可能会存储诸如$_SESSION['token']、$_SESSION['expirationTime']等变量吗?至于第三部分,为什么用户不能在本地编写一个php文件,自己设置会话变量并提交表单呢?我想我仍然缺少这种方法的一些基本要素。我希望能找到一个用PHP编写的简单示例,但在网上找不到。@navr91:这是一个小示例:
    $\u SESSION['token']=md5(time())
    $\u会话['expire']=time()+30//30秒
    当显示表单时:
    谢谢,Cheekysoft。我将通读这些链接。我想我现在了解它是如何工作的,但我只是不确定如何实现它。不过,通读OWASP保护库的源代码应该会有所帮助。