Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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 我应该在我的网页中做些什么,这样只有来自web浏览器的用户才能请求页面并发布一些数据,而不是来自使用Fiddler的用户?_Php_Post_Fiddler_Developer Tools - Fatal编程技术网

Php 我应该在我的网页中做些什么,这样只有来自web浏览器的用户才能请求页面并发布一些数据,而不是来自使用Fiddler的用户?

Php 我应该在我的网页中做些什么,这样只有来自web浏览器的用户才能请求页面并发布一些数据,而不是来自使用Fiddler的用户?,php,post,fiddler,developer-tools,Php,Post,Fiddler,Developer Tools,我最近创建了两个页面,front-end.php和back-end.php。 单击鼠标,front-end.php将一些数据发布到back-end.php(我目前正在使用ajax) 现在,如果我使用Fiddler,那么我也能够将数据发布到back-end.php。我不希望这种情况发生。我该怎么办 我在互联网上搜索答案,找到了一个词“设置用户\代理”,但并没有给出明确的解决方案 关于我想要什么,实际上我不想让一些机器人或其他类型的自动程序从某个源获取一些数据并将其发布到我的back-end.php

我最近创建了两个页面,front-end.php和back-end.php。 单击鼠标,front-end.php将一些数据发布到back-end.php(我目前正在使用ajax)

现在,如果我使用Fiddler,那么我也能够将数据发布到back-end.php。我不希望这种情况发生。我该怎么办

我在互联网上搜索答案,找到了一个词“设置用户\代理”,但并没有给出明确的解决方案


关于我想要什么,实际上我不想让一些机器人或其他类型的自动程序从某个源获取一些数据并将其发布到我的back-end.php。我想确保用户来到我的网页,然后发布一些数据。

用户代理是浏览器发送到web服务器的标头,每个请求都标识自己。它是什么样子的

Fiddler将“*”或“Fiddler”作为用户代理发送,因此您可以忽略具有这些值的请求。然而,这远远不是问题的最佳解决方案,因为用户可以通过发送任何喜欢的内容来欺骗用户代理头

另一个不安全的条件是检查。因此,除了来自“front-end.php”的请求外,您可以忽略所有请求。请记住,这也可能被用户欺骗

您还应该记住,由于用户可以使用其浏览器向web服务器发送数据,因此没有任何东西可以阻止她使用任何其他方式发送数据或发出请求

一般来说,web开发人员应该尊重用户的自由,而不是强迫用户使用此类策略,因此请更具体地告诉我们您想要解决的真正问题是什么,可能存在更优雅/安全的解决方案

编辑:如果您不希望爬虫为您的部分/所有页面编制索引,则应将它们添加到您的

关于所有其他自动化/程序,恐怕没有完美的方法来确定请求是由人类还是机器人提出的。我会做两件事:a)确保将验证规则添加到后端;b)作为最后手段实现


我只会在绝对必要的情况下使用CAPTCHA,因为它会激怒大多数用户,让他们的生活变得困难

您应该添加一些内部机密和要发送的值的散列。因为你是唯一知道如何制作散列的人,所以小提琴手不可能知道如何创建秘密

例如,将“asdflj8#######GJlk”的哈希值与表单中的值连接起来。现在黑客无法更改表单。问题是,您可以从另一个地方发布相同的值(使用相同的散列)。为了防止这种情况发生,您应该确保所有哈希只能使用一次。黑客现在唯一能做的就是从fiddler而不是你的站点发布你的请求,但不能同时发布。作为最后一步,您可以添加一些内容作为时间限制

因此,您需要的是一个包含以下内容的哈希:

  • 秘密
  • 一种使散列单次使用的方法
  • 一种限制散列时间的方法
将其添加为字段。具体实施留作练习;)

我不会使用用户代理,这些很容易伪造


(这些方法与支付提供商用于确保数据(例如支付金额!)不被篡改的方法相同)

最简单的答案是你的浏览器可以做的任何事情,Fiddler都可以做。它可以使用它想要的任何值发送它想要的任何头

如果您的目标是能够将一些值从一个页面传递到另一个页面,而无需任何人(浏览器或Fiddler)对其进行更改,则可以使用消息身份验证代码(数据的签名哈希)

ASP.NET为其“ViewState”数据构建此功能;看


然而,这使得客户端(例如JavaScript)根本无法更改值;如果JavaScript可以更改值,这意味着它有键,如果它有键,Fiddler也有键。

好的。我得到了它。关于我想要什么,实际上我不想让一些机器人或其他类型的自动程序从某个源获取一些数据并将其发布到我的back-end.php。我想确保用户来到我的网页,然后发布一些数据。