`
这些年
  • 浏览: 399910 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tomcat 禁用不安全的http请求方式(转)

 
阅读更多

1:我的配置

web.xml(url下禁用的请求方式)

<security-constraint>
		<web-resource-collection>
			<url-pattern>/*</url-pattern>
			<http-method>PUT</http-method>
			<http-method>DELETE</http-method>
			<http-method>HEAD</http-method>
			<http-method>OPTIONS</http-method>
			<http-method>TRACE</http-method>
		</web-resource-collection>
		<auth-constraint>
		</auth-constraint>
	</security-constraint>

 在网上找的,比较详细

 WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

      HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:

  OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 

  HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 

  GET 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。 

  POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 

  PUT 向指定资源位置上传其最新内容。 

  DELETE 请求服务器删除Request-URI所标识的资源。 

  TRACE 回显服务器收到的请求,主要用于测试或诊断。 

  CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 

  方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。 

  HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

     http的访问中,一般常用的两个方法是:GET和POST。其实主要是针对DELETE等方法的禁用。有两种方式:

一、修改应用中的web.xml:

    第一步:修改web-app协议

     Xml代码     

     <?xml version="1.0" encoding="UTF-8"?>     

     <web-app xmlns="http://java.sun.com/xml/ns/j2ee"     

                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     

                      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"     

                      version="2.4">  

  

    第二部:在应用程序的web.xml中添加如下的代码即可

    <security-constraint>     
    <web-resource-collection>     
       <url-pattern>/*</url-pattern>     
       <http-method>PUT</http-method>     
    <http-method>DELETE</http-method>     
    <http-method>HEAD</http-method>     
    <http-method>OPTIONS</http-method>     
    <http-method>TRACE</http-method>
    </web-resource-collection>     
       <auth-constraint>     
       </auth-constraint>     
    </security-constraint>     
    <login-config>     
        <auth-method>BASIC</auth-method>     
    </login-config>  

 

二、修改tomcat中conf下的web.xml

     步骤同上。

 

修改应用中的web.xml就只针对本应用起作用,修改tomcat中的web.xml就可以对启动在该tomcat下所有的应用起作用。

 

 

在未限制DELETE等方法前(即未做上述web.xml的内容的添加之前),测试http的DELETE方法的效果,方式如下:

第一步:

在Tomcat的web.xml 文件中配置org.apache.catalina.servlets.DefaultServlet的初始化参数

Java代码  收藏代码
  1. <init-param>  
  2.     <param-name>readonly</param-name>  
  3.     <param-value>false</param-value>  
  4. </init-param>  

 

readonly参数默认是true,即不允许delete和put操作,所以默认的通过XMLHttpRequest对象的put或者delete方法访问就会报告 http 403 forbidden 错误。

 

第二步:

从客户端通过 Ajax XMLHTTPRequest 发起 DELETE/PUT 请求,利用AJAX的方式调用DELETE,

Java代码  收藏代码
  1. <script type="text/javascript">  
  2. function getXMLHTTPRequest(){  
  3.     if (XMLHttpRequest)    {  
  4.         return new XMLHttpRequest();  
  5.     } else {  
  6.         try{  
  7.             return new ActiveXObject('Msxml2.XMLHTTP');  
  8.         }catch(e){  
  9.             return new ActiveXObject('Microsoft.XMLHTTP');  
  10.         }  
  11.     }  
  12. }  
  13. var req = getXMLHTTPRequest();  
  14. req.open('DELETE','http://localhost:8080/yours_web/test.html',false);  
  15. req.send(null);  
  16. document.write(req.responseText);  
  17.   
  18. </script>  

 document.write(req.responseText);这一句既是调用了Ajax,也是将删除的test.html返回回来,如果删除成功,那么应该看到的是404的效果。

 

 

 

另外对于web.xml配置参数的说明可参考:

http://www.blogjava.net/baoyaer/articles/107428.html

 

对于http深入了解可以参考:

http://blog.csdn.net/lyq5655779/article/details/7515284

 

分享到:
评论

相关推荐

    关于HTTP协议禁用不常用方法漏洞的解决方案.docx

    ### 关于HTTP协议禁用不常用方法漏洞的解决方案 #### 漏洞概述 在网络通信中,HTTP(超文本传输协议)是客户端与服务器之间进行数据交换的主要方式之一。HTTP定义了一系列请求方法来规范交互过程,包括但不限于GET...

    各中间件禁用不安全的HTTP方法

    本文主要介绍如何在几种常见的中间件中禁用不安全的HTTP方法,包括TOMCAT、IIS和JBOSS。 #### TOMCAT **TOMCAT**是一款流行的开源Java Web容器,为了提高安全性,可以禁用一些不安全的HTTP方法。具体步骤如下: 1...

    tomcat禁止PUT等方法

    然而,在某些情况下,我们可能需要禁止 Tomcat 上的某些 HTTP 方法,例如 PUT、DELETE、HEAD、OPTIONS 和 TRACE 方法,以确保应用程序的安全性。 在本文中,我们将讨论如何禁止 Tomcat 上的 PUT 等方法,以防止未经...

    tomcat安全加固手册

    默认情况下,Tomcat提供了一个用于关闭服务器的HTTP接口,该接口通过发送一个包含特定字符串(默认为“SHUTDOWN”)的GET请求来触发服务器关闭。为了增加安全性,建议将这个字符串更改为一个不易猜测的复杂字符串。...

    tomcat_爆破.zip

    2. **Tomcat安全设置**:学习如何正确配置Tomcat以提高安全性,包括限制远程管理、使用SSL/TLS加密通信、设置强密码、禁用不必要的服务和端口,以及定期更新到最新版本以修补已知安全漏洞。 3. **目录遍历攻击**:...

    tomcat同时使用http和https访问的配置方法

    在IT行业中,Tomcat是一个广泛使用的...这将允许你的应用根据需要提供安全或非安全的访问方式,为用户提供更好的安全体验。在部署时,确保考虑所有安全最佳实践,如定期更新证书,使用强密码,并限制对密钥库的访问。

    apache-tomcat-7.0.57(32位)

    作为一个轻量级的Web服务器,Tomcat主要负责处理HTTP请求,提供静态HTML、CSS、JavaScript文件服务,以及动态Java Web应用程序。Tomcat 7.0.57支持Servlet 3.0和JSP 2.2规范,这意味着开发者可以利用这些新特性来...

    tomcat源码

    当一个HTTP请求到达时,Coyote适配器接收到请求,将其转化为内部表示,然后传递给Catalina进行处理。处理过程中,请求会经过一系列的过滤器,最后由对应的Servlet处理,完成业务逻辑后,响应结果再通过类似的路径...

    Tomcat7性能优化

    AJP主要用于Tomcat与Apache HTTP Server之间的通信,而HTTP协议则用于处理外部客户端请求。通过选择合适的协议,可以进一步提高系统的通信效率。 ##### 3.3 Tomcat运行模式的选择 Tomcat支持三种运行模式:BIO、...

    apache-tomcat-6.0.48

    例如,你可以通过修改`&lt;Connector&gt;`元素来调整Tomcat处理请求的方式,如调整线程池大小、启用或禁用SSL等。在`&lt;Context&gt;`元素中,可以定义Web应用程序的部署路径和属性。 对于“抓包”和“抓接口”的概念,这通常...

    apache-tomcat-7.0.100防攻击版.zip

    此防攻击版可能已经禁用了不常用且可能存在风险的请求方法,仅保留了基本的GET和POST方法,以降低服务器暴露的安全风险。 4. 字符过滤:字符过滤是为了防止SQL注入、跨站脚本(XSS)等攻击。服务器可能会对输入数据...

    tomcat安装包

    1. **Catalina**:这是Tomcat的核心,实现了Java Servlet和JavaServer Pages技术,负责处理HTTP请求和响应。 2. **Jasper**:这是JSP编译器,负责将JSP文件转换为Java源代码,然后编译成Servlet。 3. **Connector*...

    tomcat原理

    1. **客户端发起HTTP请求**:客户端通过浏览器等工具向Tomcat服务器发送HTTP请求。 2. **Connector接收到请求**:Connector组件负责监听网络连接并接收客户端请求,然后将请求解析成内部协议。 3. **分发到合适的...

    Tomcat源码研究.pdf

    - **默认Connector**:默认情况下,Tomcat会配置一个HTTP/1.1 Connector,用于处理HTTP请求。 - **配置细节**:讲解了如何配置默认Connector的监听端口、连接超时时间等参数。 - **性能调优**:提供了针对默认...

    tomcat性能优化.pdf

    比如,通过源码分析,可以掌握HTTP连接处理器、NioEndPoint、Http11NioProtocol的初始化和启动过程,了解Tomcat如何处理HTTP请求。对于BIO连接器,由于其缺点导致在高并发场景下表现不佳,Tomcat官方已建议在新版本...

    tomcat-6.0.29

    5. **连接器(Connectors)**:Tomcat提供了不同的连接器,用于接收和处理HTTP请求。这些连接器可以选择使用NIO(非阻塞I/O)或BIO(阻塞I/O)模式,以适应不同的性能需求。 6. **部署**:Tomcat6支持通过XML配置...

    【BAT必备】tomcat面试题

    Tomcat如何处理HTTP请求?** - **接收请求**:Connector接收到HTTP请求后,将其封装成`Request`对象。 - **分发请求**:根据URL找到对应的Host和Context容器。 - **调用Servlet**:Context容器负责找到合适的...

    官方原版tomcat8.5.19 32位

    1. **Java Servlet**: Java Servlet是Java编程语言中的一个接口,允许服务器端程序扩展其功能,特别是处理来自客户端(如浏览器)的HTTP请求。Tomcat作为Servlet容器,负责加载Servlet类,执行服务请求,并将结果...

    网站常见漏洞及解决办法

    然而,如果一个Web服务器支持TRACE请求且没有正确配置,则可能会导致安全问题,如跨站追踪攻击(Cross-Site Tracing Attack),攻击者可以通过这种方式获取到其他用户的敏感信息。 **解决方案**: 1. **开启Apache...

    Tomcat7 性能优化

    - **默认配置**:默认情况下,Tomcat并未启用线程池,这意味着每个HTTP请求都会创建一个新的线程来处理,这显然不是最优的选择。 - **开启线程池**:通过在`server.xml`文件中配置`&lt;Executor&gt;`标签启用线程池功能,...

Global site tag (gtag.js) - Google Analytics