如何检查HTTP标头由用户修改

时间:2011-10-31 16:10:35

标签: http-headers

某些Web浏览器具有扩展/附加组件,例如。具有修改标头或篡改数据的FireFox,可以在将其发送到服务器之前修改GET / POST方法的HTTP标头。

那么,我如何检查Header是否被用户从服务器端修改了?

3 个答案:

答案 0 :(得分:0)

由于所有标头都来自客户端,作为HTTP请求的一部分,实质上它们都是由客户端修改的。您无法分辨插件添加/修改了哪些标头,至少没有任何确定性。您可以做的最好的事情是尝试收集一些启发式数据并尝试识别特定插件的已知修改(例如,插件“Foo”总是添加一个看起来像“Foo bar baz”的“XYZ”标题),但即使这样你也是必然会得到大量的误报或否定。

问题是,你为什么想知道这个?如果您依赖标题中的信息(cookie等),则可以加密该数据服务器端。这将保护它免受客户端修改。

答案 1 :(得分:0)

除非标题值无效,否则您无法使用。如果他们在会话期间编辑标头值,您可以检查浏览器和其他标头字段并将它们存储在会话中,然后检查这些字段是否未更改。即,如果在会话过程中从头部收集的$ _SERVER ['HTTP_USER_AGENT']发生变化,则标题已被篡改。

但是,如果标头值有效且不是意外,即如果您正在接收页面不使用循环通过$ _GET ['']数组的值的请求,则会返回通过GET发送的所有信息如果您收到太多或不需要的值,那么您可以调用die或登录。

请记住,我知道这些示例都是PHP,但您没有提到您想要检查的语言,所有语言都有相同的方法。

答案 2 :(得分:0)

您无法可靠地猜出请求在到达您的服务器之前发生了什么,它甚至可能是手动制作的。

如果您正在尝试确保客户端永远不会发送您的应用程序未设置的cookie(或类似的东西),那么您就不会做出任何此类假设。始终假设从远程用户发送的数据是恶意的,并谨慎使用。您可以使用HMAC签署您的cookie,以确保没有您的密钥,任何人都无法创建有效的cookie。

相关问题