xmlhttprequest欺骗引用然后重定向到另一个页面?

时间:2010-02-26 14:55:04

标签: javascript redirect referrer spoofing

我使用curl(PHP)创建了一些代码,它允许我欺骗引用者或者空白引用者,然后将用户引导到另一个带有欺骗引用者的页面。

然而,缺点是标题中的IP地址始终是我服务器的IP,这不是有效的解决方案。

问题;

是否可以使用客户端脚本,即(xmlhttprequest)来“更改”引荐来源,然后将用户引导到新页面?

因此保持用户IP地址不变但欺骗引用者。

如果是,我们非常感谢任何帮助。

谢谢!

4 个答案:

答案 0 :(得分:10)

在呈现页面时,不是来自现代浏览器中的javascript。

更新: 查看一些手动工具和其他基于javascript的平台的评论,在这些平台上,您可以在技术上欺骗引荐来源。在8年前的原始问题的背景下,似乎与提出网络请求有关,答案通常仍然是“不”。

我不打算编辑我​​所有十年前的答案,尽管这些知识分子都是如此。我提前道歉,因为没有正确预测未来,并提供一个永恒的答案。

答案 1 :(得分:1)

这似乎适用于Firefox Javascript控制台:

var xhr = new XMLHttpRequest; 
xhr.open("get", "http://www.example.com/", true); 
xhr.setRequestHeader( 'Referer', 'http://www.fake.com/' ); 
xhr.send();

在我的服务器日志中,我看到:

referer: http://www.fake.com/

答案 2 :(得分:0)

上桌时间不算太晚,但自上次发布以来似乎有所变化。

在Chrome浏览器(目前可能是大多数现代浏览器)中,不再允许通过编程方式更改“引荐来源网址”,而现在是静态的。

但是,它确实允许发送自定义标头。例如:

var xhr = new XMLHttpRequest; 
xhr.open("get", "http://www.example.com/", true); 
xhr.setRequestHeader('CustomReferer', 'http://www.fake.com/'); 
xhr.send();

在PHP中,可以通过“ HTTP_(大写的标题)”来读取标题:

$_SERVER['HTTP_CUSTOMREFERER'];

那是我项目的诀窍...

对于我们许多人来说,可能是常识,但对于一些希望有所帮助的人!

答案 3 :(得分:0)

您可以使用 Fetch API 部分修改 Referer 标头。

fetch(url, {
  referrer: yourCustomizedReferer, // Note: it's `referrer` with correct spelling, and it's NOT nested inside `headers` option
  // ...
});

但是,我认为它仅在原始 Referer 标头和您想要的 Referer 标头在同一域下时才有效。它似乎在 Safari 中不起作用。

允许修改 Referer 标头是非常出乎意料的,尽管 it's argued here 无论如何还有其他技巧(例如 pushState())可以做到这一点。