你如何欺骗HTTP_REFERER?

时间:2009-03-05 22:36:13

标签: http-referer spoofing

我需要尝试欺骗HTTP_REFERER传递给我的另一个页面,以便在目标页面中,我可以确定请求是从“正确”页面进入并执行适当的逻辑。

  1. 我如何在JavaScript(AJAX)中执行此操作?
  2. 我可以在ASP.Net中这样做吗?
  3. TIA 公羊

3 个答案:

答案 0 :(得分:9)

一般来说,如果没有漏洞,插件或其他扩展,您不能让其他浏览器返回错误的HTTP_REFERER。如果您想修改从Web浏览器发送的值并且您正在使用FireFox,请查看Modify Headers扩展名。

在任何情况下,您都不应该依赖HTTP_REFERER的准确性。无法保证您收到的HTTP_REFERER不是伪造的,也不能保证不发送。

答案 1 :(得分:2)

如果您想在目标网页上测试请求是否来自“正确”页面,则无需欺骗引荐来源。您需要做的就是从其他页面发出请求。在与您认为“正确”的URL不同的URL处设置页面,并通过单击指向目标页面的链接或通过放置来自目标的图像来发出请求。

答案 2 :(得分:2)

已经提到你不能真正欺骗事物。但要澄清一下,HTTP_REFERER标头是由浏览器生成的,所以在服务器端你无法控制它(包括交换javascript的东西,可能启用也可能不启用)。 / p>

如果您只想测试页面对某些标题的响应(例如“Referer:”),您可以使用大多数BSD中可用的命令行工具,如curlwget和Linux变种(包括OS / X)。如果您使用的是MS Windows,则可以使用Cygwin进行curl或wget。

    wget -O - --referer="http://example.com/some/path" http://example.com/

    curl -e "http://example.com/some/path" http://example.com/

但我认为,这样做的核心原因显然是“保护”一个页面。如果你真的想确保只在首先访问某个其他页面(“A”)之后才访问某个页面(称之为“B”),那么在服务器端需要更复杂的逻辑。

如果您正在存储会话cookie,那么您可以在页面“A”上嵌入一些设置布尔变量的逻辑。然后在页面“B”上添加逻辑,检查以确保变量已设置。

我将把它作为练习让读者弄清楚如何在ASP.NET中执行此操作。 (因为我是PHP程序员。; - ])