【发布时间】:2010-10-11 15:30:06
【问题描述】:
我需要尝试欺骗通过我的另一个页面的 HTTP_REFERER,以便在目标页面中,我可以确定请求来自“正确”页面并执行适当的逻辑。
- 如何在 JavaScript (AJAX) 中做到这一点?
- 我可以在 ASP.Net 中这样做吗?
TIA 公羊
【问题讨论】:
标签: http-referer spoofing
我需要尝试欺骗通过我的另一个页面的 HTTP_REFERER,以便在目标页面中,我可以确定请求来自“正确”页面并执行适当的逻辑。
TIA 公羊
【问题讨论】:
标签: http-referer spoofing
一般来说,您不能在没有漏洞利用、插件或其他扩展的情况下导致其他浏览器返回错误的 HTTP_REFERER。如果您想修改从 Web 浏览器发送的值并且您使用的是 FireFox,请查看 Modify Headers 扩展名。
在任何情况下,您都不应依赖 HTTP_REFERER 的准确性。无法保证您收到的 HTTP_REFERER 不是伪造的或根本没有发送。
【讨论】:
如果您想在目标页面测试请求是否来自“正确”页面,则无需欺骗引荐来源网址。您需要做的就是从不同的页面发出请求。在与您认为“正确”的 URL 不同的 URL 上设置一个页面,并从那里发出请求,方法是单击目标页面的链接或放置来自目标的图像。
【讨论】:
已经提到你不能真正欺骗事物。但需要澄清的是,HTTP_REFERER 标头由浏览器生成,因此在服务器端您无法控制它(包括传递 javascript 的东西,可能启用也可能不启用)。
如果您只是想测试您的页面对某些标头(例如“Referer:”)的响应,您可以使用诸如curl 或wget 之类的命令行工具,这些工具在大多数 BSD 和 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 程序员。;-])
【讨论】: