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
分享到:
相关推荐
- **BIO (Blocking I/O)**:这是Tomcat默认的模式,每个连接都会占用一个独立的线程来处理请求,适用于低并发场景。但在高并发环境下,这种模式会导致大量线程的创建和销毁,消耗过多资源。 - **NIO (New I/O)**:...
比如,通过源码分析,可以掌握HTTP连接处理器、NioEndPoint、Http11NioProtocol的初始化和启动过程,了解Tomcat如何处理HTTP请求。对于BIO连接器,由于其缺点导致在高并发场景下表现不佳,Tomcat官方已建议在新版本...
1. **客户端发起HTTP请求**:客户端通过浏览器等工具向Tomcat服务器发送HTTP请求。 2. **Connector接收到请求**:Connector组件负责监听网络连接并接收客户端请求,然后将请求解析成内部协议。 3. **分发到合适的...
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] ...
- **默认Connector**:默认情况下,Tomcat会配置一个HTTP/1.1 Connector,用于处理HTTP请求。 - **配置细节**:讲解了如何配置默认Connector的监听端口、连接超时时间等参数。 - **性能调优**:提供了针对默认...
- **默认配置**:默认情况下,Tomcat并未启用线程池,这意味着每个HTTP请求都会创建一个新的线程来处理,这显然不是最优的选择。 - **开启线程池**:通过在`server.xml`文件中配置`<Executor>`标签启用线程池功能,...
Tomcat有三种运行模式:Bio(阻塞I/O)、NIO(非阻塞I/O)和APR(使用操作系统级别的异步I/O)。NIO模式利用Java的异步I/O技术,性能优于Bio,而APR虽然安装复杂,但性能提升更大。 3. **启用NIO模式** 修改`...
在这个例子中,所有的请求都被发送到AJP13工作器,这意味着所有的动态请求都将由Tomcat处理。 通过以上整合,我们可以充分利用Apache处理静态资源的能力,同时利用Tomcat处理Java应用,提高Web服务器的整体性能和...
本文将围绕“Tomcat7优化与性能调优”的主题,深入探讨优化策略,包括但不限于配置调整、启动模式选择、线程池设置、JVM参数调整等方面。 #### 二、服务器资源考量 服务器所能提供的CPU、内存、硬盘等硬件资源对...
禁用AJP连接器可以避免不必要的安全风险,并可能提高性能,通过在`server.xml`中注释或移除`<Connector protocol="AJP/1.3">`段来实现。 三、JVM参数优化 1. **堆大小设置**:`-Xms`和`-Xmx`分别指定JVM初始和最大...
根据提供的文件信息,本文将详细解释Apache Tomcat 8.0.21的部署与配置过程,主要包括删除webapps目录、调整Tomcat内存配置、修改context.xml和server.xml文件等关键步骤。 ### 一、Apache Tomcat 8.0.21简介 ...
- **禁用AJP连接器**:在使用Nginx+Tomcat架构时,通常不需要AJP连接器,因此可以通过注释掉`server.xml`中的相应配置来禁用它。 ##### 3.6 JVM参数的优化 合理的JVM参数设置可以进一步提升Tomcat的性能。 - **...
在**参数最佳实践**中,通常建议禁用AJP连接器,因为AJP主要用于连接WEB服务器和Servlet容器,而在Nginx+Tomcat这样的架构中,HTTP反向代理已经足够,无需AJP。 最后,**JVM参数**的调整同样重要。正确配置JVM堆...
Tomcat7调优主要包括禁用不必要的AJP协议、切换到更高效的NIO通讯模式以及合理配置JVM参数。这些步骤有助于减少资源消耗,提高并发处理能力,从而提升整体系统性能。同时,持续监控和调整是保持Tomcat高效运行的关键...
- **原理**:Tomcat使用线程池处理HTTP请求,合理的线程池配置可以有效提高系统的并发处理能力。 - **配置方法**:在`server.xml`中配置`<Executor>`元素来定义线程池。 - `name="tomcatThreadPool"`:线程池名称。...
- `maxHttpHeaderSize`: HTTP请求头部的最大大小。 - `maxThreads`: Connector用于处理请求的最大线程数。 - `minSpareThreads`: 初始时保持空闲的最小线程数。 **Tomcat的容器结构** Tomcat服务器由四个主要的容器...
Tomcat是 Jakarta 项目的一部分,是一个开源的Web应用服务器,可以处理大量的HTTP请求。为了提高Tomcat的性能,需要对其进行合理的参数配置。本文将详细介绍Tomcat参数配置的方法和原理。 一、调整JVM内存位置 在...