【问题标题】:Prevent redirection from an external website to my domain防止从外部网站重定向到我的域
【发布时间】: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


【解决方案1】:

使用 apache,您可以通过将 .htaccess 文件添加到根目录并添加以下指令来重写重定向规则:

RewriteEngine on
RewriteCond %{HTTP_REFERER} xyz\.biz [NC]
RewriteRule .* - [F]

【讨论】:

  • 由于域与 IIS8/Windows Server 连接,我遵循article 中专门针对 web.config 解释的类似规则,但仍然没有运气。似乎浏览器阻止从 xyz.biz 域发送 http_referer 数据..
  • 这几乎从一开始就被猜到了。考虑到公共网站的类型,您可以使用 maxmindb 阻止来自整个国家的连接,或者更进一步并考虑使用“像” distilnetworks 或其他可以告诉您是否应该允许连接的外部服务。正如我已经评论的那样,阻止所有 320 个不提供推荐人的重定向可能会缓解问题。
  • 好的,我现在明白了,但还要考虑到您可能会想到的重定向限制。
【解决方案2】:

我有一个域调用abcd.com,我发现另一个域调用xyz.biz 将他们的所有流量重定向到我的域。我想停止来自xyz.biz的查询/重定向

如果xyz.biz 是 HTTP 3xx 重定向流量(您已在 cmets 中确认是 302),那么很遗憾,这根本不可能。因为重定向的请求来自向xyz.biz 发出初始请求的用户代理,而不是来自xyz.biz 本身。命中 abcd.com 的请求中的 HTTP Referer 标头和远程 IP 地址实际上可以是任何东西。

abcd.com 的请求可能来自xyz.biz 的重定向,这一事实对abcd.com 完全隐藏。这与用户实际点击xyz.biz 的链接时不同 - 在这种情况下,xyz.biz Referer(除非 Referrer-Policy 阻止它)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-04
    • 2018-10-12
    • 2020-05-13
    • 2012-06-11
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2018-07-14
    相关资源
    最近更新 更多