【发布时间】:2020-04-19 18:32:07
【问题描述】:
我正在寻找一种解决方案来防止从外部网站重定向到我的域。比方说,我有一个域调用 abcd.com,我发现另一个域调用 xyz.biz 将他们的所有流量重定向到我的域。我想停止来自 xyz.biz 的查询/重定向
我正在使用 IIS8/Windows Server 2012 并尝试了以下配置,但没有成功。
选项 1:我已在 web.config 文件中的 HTTP_REFERER 脚本下方添加,但它仍然接受该重定向请求。
<rule name="DenyAccess" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTP_REFERER}" pattern="xyz.biz" />
<add input="{HTTP_REFERER}" pattern="www.xyz.biz" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
选项 2: 我尝试在 index.php 文件中添加以下 PHP 脚本,但没有成功。
$ref=$_SERVER['HTTP_REFERER'];
if($ref=="http://xyz.biz" || $ref=="http://www.xyz.biz"){
exit();
}
当我执行 echo $_SERVER['HTTP_REFERER'] 时,它会返回空结果,并且看不到从 xyz.biz 捕获的任何详细信息
谁能建议我们如何解决这个问题?提前致谢。
【问题讨论】:
-
问题可能出在此处:
$ref=$_SERVER['HTTP_REFERER];添加缺少的引号 ' =>$ref=$_SERVER['HTTP_REFERER']; -
@Mostav 感谢您的评论。这只是一个输入错误,它在我的 PHP 中正确编写,缺少引号。
-
你检查
HTTP_HOST了吗?是否包含 xyz.biz? -
仅当连接是使用标头中的数据构建的,即浏览器单击链接时,才会出现引荐来源网址。如果您要过滤的流量是故意发送的而没有此类标头,那么您将无法知道它。您是在谈论来自其他网站的不需要的流量吗?
-
另外,您称其为重定向,但没有具体说明它是否是正确的 RFC(301、302 等)重定向,其中应包括引荐来源网址,或者是否是通过 javascript 或其他重定向的不需要的流量。这就是为什么我询问流量的真正来源。此外,正如您所看到的 (stackoverflow.com/questions/2158283/…),所有浏览器都有不同的行为,所以如果您不控制连接的来源,那么拥有这样的引荐来源网址将无济于事。如果您在谈论不需要的流量,请忘记它并继续使用其他类型的解决方案。
标签: php redirect iis web-config