4

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

  1. 我如何在 JavaScript (AJAX) 中做到这一点?
  2. 我可以在 ASP.Net 中做到这一点吗?

TIA 公羊

4

3 回答 3

10

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

在任何情况下,您都不应依赖 HTTP_REFERER 的准确性。无法保证您收到的 HTTP_REFERER 不是伪造的或根本没有发送。

于 2009-03-05T22:44:33.773 回答
2

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

于 2009-03-05T22:47:30.067 回答
2

已经提到你不能真正欺骗事物。但需要澄清的是, HTTP_REFERER 标头是由浏览器生成的,因此在服务器端您无法控制它(包括传递 javascript 的东西,可能会或可能不会启用)。

如果您只想测试页面对某些标题的响应(例如“Referer:”),您可以使用大多数 BSD 和 Linux 变体(包括 OS/X)中可用的curlwget等命令行工具。如果您使用的是 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”),那么您需要在服务器端进行更复杂的逻辑。

If you're storing a session cookie, then you can embed some logic on page "A" that sets a boolean variable. Then add logic on page "B" that checks to make sure the variable has been set.

I'll leave it as an exercise for the reader to figure out how to do this in ASP.NET. (Because I'm a PHP programmer. ;-] )

于 2011-12-13T16:39:04.263 回答