`

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

阅读更多
tomcat 禁用不安全的http请求方式(转)
1:我的配置
web.xml(url下禁用的请求方式)
[xml] view plain copy
<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代码  收藏代码
<init-param> 
    <param-name>readonly</param-name> 
    <param-value>false</param-value> 
</init-param> 

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

第二步:
从客户端通过 Ajax XMLHTTPRequest 发起 DELETE/PUT 请求,利用AJAX的方式调用DELETE,
Java代码  收藏代码
<script type="text/javascript"> 
function getXMLHTTPRequest(){ 
    if (XMLHttpRequest)    { 
        return new XMLHttpRequest(); 
    } else { 
        try{ 
            return new ActiveXObject('Msxml2.XMLHTTP'); 
        }catch(e){ 
            return new ActiveXObject('Microsoft.XMLHTTP'); 
        } 
    } 

var req = getXMLHTTPRequest(); 
req.open('DELETE','http://localhost:8080/yours_web/test.html',false); 
req.send(null); 
document.write(req.responseText); 
 
</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
分享到:
评论

相关推荐

    Tomcat7性能优化

    - **BIO (Blocking I/O)**:这是Tomcat默认的模式,每个连接都会占用一个独立的线程来处理请求,适用于低并发场景。但在高并发环境下,这种模式会导致大量线程的创建和销毁,消耗过多资源。 - **NIO (New I/O)**:...

    tomcat性能优化.pdf

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

    tomcat原理

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

    tomcat-6.0.29

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

    网站常见漏洞及解决办法

    - 为了防止TRACE请求可能带来的安全风险,可以在`httpd.conf`文件的末尾添加以下规则来禁用TRACE方法: ```apacheconf RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] ...

    Tomcat源码研究.pdf

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

    Tomcat7 性能优化

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

    Tomcat7优化.docx

    Tomcat有三种运行模式:Bio(阻塞I/O)、NIO(非阻塞I/O)和APR(使用操作系统级别的异步I/O)。NIO模式利用Java的异步I/O技术,性能优于Bio,而APR虽然安装复杂,但性能提升更大。 3. **启用NIO模式** 修改`...

    Apache与Tomcat 整合发布web

    在这个例子中,所有的请求都被发送到AJP13工作器,这意味着所有的动态请求都将由Tomcat处理。 通过以上整合,我们可以充分利用Apache处理静态资源的能力,同时利用Tomcat处理Java应用,提高Web服务器的整体性能和...

    tomcat7 优化 性能调优

    本文将围绕“Tomcat7优化与性能调优”的主题,深入探讨优化策略,包括但不限于配置调整、启动模式选择、线程池设置、JVM参数调整等方面。 #### 二、服务器资源考量 服务器所能提供的CPU、内存、硬盘等硬件资源对...

    Tomcat优化

    禁用AJP连接器可以避免不必要的安全风险,并可能提高性能,通过在`server.xml`中注释或移除`&lt;Connector protocol="AJP/1.3"&gt;`段来实现。 三、JVM参数优化 1. **堆大小设置**:`-Xms`和`-Xmx`分别指定JVM初始和最大...

    apache-tomcat-8.0.21部署配置说明.pdf

    根据提供的文件信息,本文将详细解释Apache Tomcat 8.0.21的部署与配置过程,主要包括删除webapps目录、调整Tomcat内存配置、修改context.xml和server.xml文件等关键步骤。 ### 一、Apache Tomcat 8.0.21简介 ...

    Tomcat性能优化

    - **禁用AJP连接器**:在使用Nginx+Tomcat架构时,通常不需要AJP连接器,因此可以通过注释掉`server.xml`中的相应配置来禁用它。 ##### 3.6 JVM参数的优化 合理的JVM参数设置可以进一步提升Tomcat的性能。 - **...

    Tomcat实战-调优方案.docx

    在**参数最佳实践**中,通常建议禁用AJP连接器,因为AJP主要用于连接WEB服务器和Servlet容器,而在Nginx+Tomcat这样的架构中,HTTP反向代理已经足够,无需AJP。 最后,**JVM参数**的调整同样重要。正确配置JVM堆...

    tomcat7调优

    Tomcat7调优主要包括禁用不必要的AJP协议、切换到更高效的NIO通讯模式以及合理配置JVM参数。这些步骤有助于减少资源消耗,提高并发处理能力,从而提升整体系统性能。同时,持续监控和调整是保持Tomcat高效运行的关键...

    tomcat7优化

    - **原理**:Tomcat使用线程池处理HTTP请求,合理的线程池配置可以有效提高系统的并发处理能力。 - **配置方法**:在`server.xml`中配置`&lt;Executor&gt;`元素来定义线程池。 - `name="tomcatThreadPool"`:线程池名称。...

    Tomcat3源码.pdf

    - `maxHttpHeaderSize`: HTTP请求头部的最大大小。 - `maxThreads`: Connector用于处理请求的最大线程数。 - `minSpareThreads`: 初始时保持空闲的最小线程数。 **Tomcat的容器结构** Tomcat服务器由四个主要的容器...

    tomcat参数配置[借鉴].pdf

    Tomcat是 Jakarta 项目的一部分,是一个开源的Web应用服务器,可以处理大量的HTTP请求。为了提高Tomcat的性能,需要对其进行合理的参数配置。本文将详细介绍Tomcat参数配置的方法和原理。 一、调整JVM内存位置 在...

Global site tag (gtag.js) - Google Analytics