阻止指向您的其他域名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阻止指向您的其他域名相关的知识,希望对你有一定的参考价值。

我有域名abc.com,我注意到另一个域名不属于我的域名,指向与我相同的IP地址。这是重影我的,所以当你访问该网站时,它看起来就像你在我的网站。

有关如何预防的任何想法?

我的vhost看起来像:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName www.example.com
        DocumentRoot /path/to/site

        <Directory /path/to/site/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>


RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !example.com [NC]
RewriteCond %{HTTP_HOST} !example.com [NC]
RewriteRule .? - [F]

ServerName example.com
ServerAlias www.example.com
</VirtualHost>
</IfModule>
答案

Apache使用HTTP请求标头中的Host字段来了解请求的vhost(Host对应于apache ServerNameServerAlias)。

试试apache2ctl -S,它会给你一个包含如下内容的输出:

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server ip (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost ip (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost www.example1.com (/etc/apache2/sites-enabled/001-vhost.conf:1)
         port 80 namevhost www.example2.com (/etc/apache2/sites-enabled/002-vhost.conf:1)
*:443                  is a NameVirtualHost
         default server 127.0.1.1 (/etc/apache2/sites-enabled/default-ssl.conf:2)
         port 443 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/default-ssl.conf:2)
         port 443 namevhost www.example1.com (/etc/apache2/sites-enabled/non-default-ssl.conf:2)

现在假设我的ip是1.1.1.1:

鉴于这三个curl命令:

1. curl http://1.1.1.1 -H 'Host: www.example1.com'
1. curl http://1.1.1.1 -H 'Host: www.example2.com'
1. curl http://1.1.1.1 -H 'Host: www.spoofexample.com'

首先,apache在vhost文件中找到相应的ServerName,并使用/etc/apache2/sites-enabled/001-vhost.conf来满足请求

第二,apache在vhost文件中找到相应的ServerName,并使用/etc/apache2/sites-enabled/002-vhost.conf来满足请求

第三个(你的不受欢迎的映射DNS),apache没有在任何vhosts文件中找到相应的ServerName,并使用/etc/apache2/sites-enabled/000-default.conf来满足请求

同样的逻辑适用于SSL虚拟主机。

PS1:ServerName默认HTTP vhost的值为ip,默认SSL vhost中没有ServerName。 Apache只假设一个127.0.1.1,它不是它所监听的IP地址(只是告诉它不会让人感到困惑)。

PS2:要使vhost成为默认值,它必须是按名称排序的第一个(000 - > 001 - > 002)。

另一答案

有人可能会冒你的帐户。假设我是hostgator的abc.com域名所有者。为了在godaddy.com上托管它,我必须去域控制器把godaddy名称服务器放在那里。然后在托管我创建一个同名的网站。您也不应该使用ipaddress托管真实域名。始终使用名称服务器,这将阻止所有这些配置。请检查此页面是否有重定向https://www.namecheap.com/support/knowledgebase/article.aspx/385/2237/how-to-redirect-a-url-for-a-domain您是否从本地计算机托管域名?

以上是关于阻止指向您的其他域名的主要内容,如果未能解决你的问题,请参考以下文章

Rail片段缓存如何使您的应用受益,即阻止数据库调用?

二级域名原理以及程序代码

阻止人们从我的域名中获取我的 ip。? [关闭]

如何阻止其他人的域指向我的 Apache 托管网站?

仅在一个片段中隐藏状态栏并在其他片段中显示

chrome阻止localhost,错误,您的连接不是私有的