如何保护仅由localhost访问的webapp?

时间:2010-02-02 11:11:56

标签: security deployment java-ee solr web-applications

我打算在同一个java容器中运行 java web应用程序 solr 。我希望Web应用程序可以公开访问,但solr只能访问同一容器中的其他Web应用程序。 Solr只能作为localhost访问,而不能从外部访问。我们可以在web-xml中编写一些规则来实现这一目标吗?

3 个答案:

答案 0 :(得分:2)

这实际上是serverfault的问题。无论如何,你可以像处理任何内部服务器一样处理这个问题,比如数据库服务器:不要给Solr一个公共IP,或者把它放在防火墙后面。

除此之外,您可以设置HTTP身份验证(Tomcat example)或将容器设置为仅侦听localhost(即,如果您的Web应用程序在同一个框上运行)(jetty example) ,但我建议将其置于正确配置的防火墙之后。

另请参阅SolrSecurity wiki page,但它主要涉及Solr级安全性。

答案 1 :(得分:1)

对于Resin,您可以通过IP地址定义安全性约束。以下是来自树脂2.X的样品我正在使用它可能与树脂3或4

略有不同
<host id='solr.mydomain.com' app-dir='/dev/null'>
   <env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>/usr/local/java/solr-home</env-entry-value>
  </env-entry>
   <security-constraint>
     <web-resource-collection>
       <url-pattern>/*</url-pattern>
     </web-resource-collection>
     <ip-constraint>127.0.0.1</ip-constraint>
     <ip-constraint>192.168.1.0/24</ip-constraint>
   </security-constraint>
   <war-dir>webapps/solr</war-dir>
   <access-log id='log/solr-access.log'
     format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'/>
   <error-log id='log/solr-error.log'/>
</host>

答案 2 :(得分:0)

我在Solr wiki上找到了这个链接,详细介绍了安装过程以及保护应用程序的方法。 http://wiki.apache.org/solr/SolrInstall