中间件Apache/JBoss 隐藏服务器版本信息

在一般情况下,我们可以在http header里看到服务器构建的信息,如:

Server : Apache/2.0.61 (Unix)
X-Powered-By : Servlet 2.4; JBoss-4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)/Tomcat-5.5

这可能存在一些麻烦,如果让人知道软件版本,特别是在软件有bug的情况下会比较危险,所以我们可以把这些信息屏蔽,不给客户端用户知道.

Server信息

这是在apache里控制的,在httpd.conf里加入一行

ServerTokens Prod

这样,http header里的显示最简单的server信息,当然也可以设置其他的级别,以下设置的级别和输出信息对照情况:

ServerTokens Prod[uctOnly]

       Server sends (e.g.): Server: Apache 

ServerTokens Major

      Server sends (e.g.): Server: Apache/2 

ServerTokens Minor

     Server sends (e.g.): Server: Apache/2.0 

ServerTokens Min[imal]

     Server sends (e.g.): Server: Apache/2.0.41 

ServerTokens OS

     Server sends (e.g.): Server: Apache/2.0.41 (Unix) 

ServerTokens Full (or not specified)

     Server sends (e.g.): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 

X-Powered-By信息

这个一般是有应用服务器提供的,如jboss下,他是由一个filter提供的,你可以定义你所需要的信息,(根据版本不同,配置文件稍有不同)

jboss-4.2.2.GA版本配置文件位置 server\default\deploy\jboss-web.deployer\conf
在这里插入图片描述
这个文件中定义,有这样的几句:

<!-- ================== Common filter Configuration ==================== --> 
   <filter> 
      <filter-name>CommonHeadersFilter</filter-name> 
      <filter-class>org.jboss.web.tomcat.filters.ReplyHeaderFilter</filter-class> 
      <init-param> 
         <param-name>X-Powered-By</param-name> 
         <param-value>Servlet 2.4; JBoss-4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)/Tomcat-5.5</param-value> 
      </init-param> 
   </filter> 

   <filter-mapping> 
      <filter-name>CommonHeadersFilter</filter-name> 
      <url-pattern>/*</url-pattern> 
   </filter-mapping>  

这可以在param-value中修改你想要显示的信息,如JBoss等

修改如下:
在这里插入图片描述
在这里插入图片描述
通过看ReplyHeaderFilter的源代码得知,其实这个filter没有做其他的事情,只是把X-Powered-By信息放到http header中,所以可以全部注释掉,这样http header中就不会有任何X-Powered-By的信息了

发布了21 篇原创文章 · 获赞 5 · 访问量 585

猜你喜欢

转载自blog.csdn.net/baidu_19620507/article/details/104637251