我想欺骗推荐人。
A.com - > B.com - > Destination.com
A.com我
header("Location: http://B.com/redirect.php?site='http://destination.com'");
B.com我有
$target = $_GET['site'];
header("Location: $target");
Destination.com将$_SERVER['HTTP_REFERER'];
写入数据库,我可以确认参与欺骗是否有效。
然而,数据库显示referer是A.com而不是B.com!我哪里出错了?
答案 0 :(得分:5)
位置标头是重定向的。你告诉浏览器“你想要的不在这里,转而去看看。”
因此,浏览器很乐意将相同的请求提交给新网址。
当然,作为相同的请求,发送的推荐人不会改变。
答案 1 :(得分:0)
没有尝试' 并详细说明您的GET:)
答案 2 :(得分:0)
如果您不希望引用者通过,请不要使用真正的HTTP重定向。还有其他一些方法通常不如正确的重定向,但如果你担心避免引用漏洞而不太担心可用性或SEO,那么这些方法会很有用。
location.replace('someurl');
。这会将B.com上的重定向页面作为除IE之外的所有浏览器的引用者传递。
<meta http-equiv="Refresh" content="0;url=someurl" />
。引用者将是Opera 这会将引荐来源设置为Opera,Safari和Chrome上的B.com,而不是IE或Firefox。
action="someurl"
的表单,使用JavaScript自动提交。这会在URL中添加一个空的?
查询,并且在没有bfcache的浏览器中以相当令人讨厌的方式打破后退按钮。这总是将引荐者设置为B.com。