首页 > Java技术栈 > 关于tomcat服务器绑定域名防止恶意域名绑定

关于tomcat服务器绑定域名防止恶意域名绑定

2016年11月2日

关于tomcat服务器绑定域名防止恶意域名绑定
http://blog.csdn.net/shendixiaoxuan/article/details/23858063
今天下午突然发现客户的域名被恶意域名“www.walking.cn”绑定了,由于之前没有遇到过这种情况,刚开始不知道是什么情况,还以为是客户那边改了,一问都没有,在网上找了很多解决方法什么ngnxi啊都不管用,都是说绑定自己的域名,没说如何不让其他域名绑定。

于是开始研究server.xml文件,修改tomcat/conf/server.xml,找到engine元素,仿照已有的localhost,添加host元素,比如你想禁止www.dddd.com,可以这样写:

Xml代码 收藏代码
<Host name=”www.dddd.com” appBase=”notexists”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”></Host>

其中的appBase是一个不存在的目录,所以www.dddd.com请求时,不会访问你真实的应用。但是这样只是屏蔽了一个已知的,还有很多恶意域名是不可预知的,你并不知道会有多少域名绑定到你的IP,所以这种方式行不通。

上面的方式是默认允许,把禁止的列出来,变换下思路,默认禁止,将允许的列出来,这样不就OK了?所以有第二种方式:
Xml代码 收藏代码
<!– default host is forbiden –>
<Engine name=”Catalina” defaultHost=”forbiden”>
<Realm className=”org.apache.catalina.realm.UserDatabaseRealm”
resourceName=”UserDatabase”/>

<!– allow hosts –>
<Host name=”localhost” appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”></Host>
<Host name=”www.yourweb.com” appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”></Host>
<Host name=”192.168.0.34″ appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”></Host>

<!– forbiden host, the appBase is a not exists directory.
If the requested domain is not in the above list of hosts where are allowed, then use this host.
–>
<Host name=”forbiden” appBase=”notexists”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”></Host>
</Engine>

这里将Engine中的defaultHost设置为forbiden,下面有个name为forbiden的host,其appBase是个不存在的目录。再添加允许的host。所以,如果是未知的域名,则会使用forbiden的host,这样就访问不到真实应用目录了。

分类: Java技术栈 标签:
本文的评论功能被关闭了.