我听说HTTP_REFERER可能是欺骗性的.我有2个站点,第一个站点与第二个站点联系,第二个站点使用HTTP_REFERER来验证请求是否来自第一个站点.
如果我从第一个站点收到第二个站点的虚假请求,并且我知道没有提出此请求,我应该怎么想?第三个网站是为所有用户欺骗http_ref,还是个人从浏览器设置中欺骗它?我想知道客户端/浏览器或网站本身是否设置/欺骗了http_ref?
我想保存用户注册时来自的网站.我对用户在注册前在我的网站上看到的第一页的HTTP引用感兴趣.
我该如何实现它?
我使用下面的代码使用 .htaccess 文件创建了自定义 404 消息(找不到页面)。
RewriteEngine On
ErrorDocument 404 https://%{HTTP_HOST}/404.php
Run Code Online (Sandbox Code Playgroud)
它运行良好,但我想知道导致此重定向的错误 URL 是什么。换句话说,当用户在 404.php 中时,我需要获取HTTP 引用。所以我$_SERVER['HTTP_REFERER']在404.php中使用过,但是它没有返回任何东西。
我哪里出错了?你解决这个问题的方法是什么?
我正在开发一个网站,由于用户输入或其他原因,我需要显示一些错误消息.为此,我有一个名为error.php的页面,我使用$ _GET获取错误号.所有错误消息都存储在一个数组中.
例:
header( 'Location: error.php?n=11' );
Run Code Online (Sandbox Code Playgroud)
但我不希望用户在URL中输入错误代码并查看所有其他错误消息.为了防止这种情况,我想我可以将引用页面列入白名单,并且只有在我的白名单中找到引用者时才显示错误消息.
它应该是公平的(尚未测试;))
$accept = false;
$allowedReferer = array (0=>'page1.php', 'page2.php');
if (in_array($_SERVER['HTTP_REFERER'], $allowedReferer )) {$accept = true;}
if ($accept) { $n=$_GET['n'];echo "Error: " . $errorList[$n];}
Run Code Online (Sandbox Code Playgroud)
这种方法是否足以避免间谍用户?
我正在用PHP5做这个
谢谢
我之前在foo.php中使用过referrer来判断iframing foo.php的页面是否属于特定的URL.(使用$_SERVER['HTTP_REFERER'])
事实证明,大部分时间,它工作(大约98%的时间),但似乎有些用户到达页面,$_SERVER['HTTP_REFERER']并没有设置在foo.php,因此打破了代码.[ 更新:这些用户声称他们遵循通常的页面流程并且没有在浏览器上使用foo.php的URL(他们让它成为iframe)并且用户从未改变他们的浏览器设置.]
我想知道它可能发生的原因是什么?
我正在尝试用PHP学习cURL来欺骗引用者到网站.
使用以下脚本我希望完成此操作......但它似乎无法正常工作.
我出错的任何想法/建议?
或者您知道任何可以帮助我解决这个问题的教程吗?
谢谢!
杰西卡
<?php
$host = "http://mysite.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_REFERER, "http://google.com");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
?>
Run Code Online (Sandbox Code Playgroud) 我在SO和其他网站上都读过,这$_SERVER['HTTP_REFERER']是我们作为程序员应该总是避免的事情.阅读PHP手册我们遇到以下几行:
将用户代理引用到当前页面的页面地址(如果有).这是由用户代理设置的.并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能.简而言之,它无法真正被信任.
考虑到"用户代理"之类的东西,例如Web浏览器(Safari,Chrome,Opera,Firefox,基本上它们都是),手册告诉我们这个变量可能会被它们改变.这是我的第一个问题:
问题1:"用户代理"为什么要修改此参数?Web浏览器不设置此参数的原因是什么?
这只是好奇心,我不会用$_SERVER['HTTP_REFERER'].从我最近的陈述中可以看出,如果我们确实需要这样的功能,我们需要弄明白.我想到的第一件事是一个cookie解决方案,我们在其中执行以下操作:
setcookie('latest_page', __FILE__, 60 * 60 * 24 * 7);
Run Code Online (Sandbox Code Playgroud)
然后,根据您喜欢的方式,您可以恢复所需的内容.这是第二个也是最后一个问题:
问题2:这种方式最好吗?有没有办法改善它?
我正在试图弄清楚如何检查我的内页之一的引荐网址是否是主页.如果主页总是www.mysite.com/index.php,这很容易,但当它只是www.mysite.com时会发生什么?
我知道我可以做到
$url = $_SERVER['HTTP_REFERER'];
$pos = strrpos($url, "/");
$page = substr($url, $pos+1, (strlen($url)-$pos+1));
if (substr_count($url, 'index')) echo 'from index ';
Run Code Online (Sandbox Code Playgroud)
但我的$ url变量中没有index.php.
在C#控制台应用程序中使用Selenium C#PhantomJSDriver时,如何设置http referer标头?
我正在使用PhantomJSDriver和我无法控制的代理.
PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
service.AddArgument("--proxy=123.456.78.910:80");
service.AddArgument("--proxy-auth=myproxyuid:myproxypwd");
IWebDriver driver = new PhantomJSDriver(service);
driver.Navigate().GoToUrl("http://www.testsite.com/product/123/");
Run Code Online (Sandbox Code Playgroud)
但是,正在测试的Web应用程序会对请求中的HTTP Referer值执行验证.
我可以使用什么方法在PhantomJSDriver请求中注入HTTP Referer?
我一直试图阻止所有试图查看.php页面的人访问,而不是来自我的特定跟踪链接.
我希望如果他们不是来自我的链接,他们会被重定向到另一个网站.我尝试使用.htaccess方法如下:
RewriteEngine On
RewriteBase /
# allow these referers to passthrough
RewriteCond %{HTTP_REFERER} ^http://subdomain.domain.com
RewriteRule ^ - [L]
# redirect everything else
RewriteRule ^ http://anotherDomain.com/ [R,L]
Run Code Online (Sandbox Code Playgroud)
这是因为http://subdomain.domain.com是一个重定向到website.php的跟踪网址,但它似乎无法正常工作,尽管有任何推荐人,甚至直接在工具栏中输入网站的.dp的网址是用户到website.php.
我想要实现的是,只有来自subdomain.domain.com的用户才能看到website.php
提前致谢.