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的初始化参数
- <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,
- <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
相关推荐
### 关于HTTP协议禁用不常用方法漏洞的解决方案 #### 漏洞概述 在网络通信中,HTTP(超文本传输协议)是客户端与服务器之间进行数据交换的主要方式之一。HTTP定义了一系列请求方法来规范交互过程,包括但不限于GET...
本文主要介绍如何在几种常见的中间件中禁用不安全的HTTP方法,包括TOMCAT、IIS和JBOSS。 #### TOMCAT **TOMCAT**是一款流行的开源Java Web容器,为了提高安全性,可以禁用一些不安全的HTTP方法。具体步骤如下: 1...
然而,在某些情况下,我们可能需要禁止 Tomcat 上的某些 HTTP 方法,例如 PUT、DELETE、HEAD、OPTIONS 和 TRACE 方法,以确保应用程序的安全性。 在本文中,我们将讨论如何禁止 Tomcat 上的 PUT 等方法,以防止未经...
默认情况下,Tomcat提供了一个用于关闭服务器的HTTP接口,该接口通过发送一个包含特定字符串(默认为“SHUTDOWN”)的GET请求来触发服务器关闭。为了增加安全性,建议将这个字符串更改为一个不易猜测的复杂字符串。...
2. **Tomcat安全设置**:学习如何正确配置Tomcat以提高安全性,包括限制远程管理、使用SSL/TLS加密通信、设置强密码、禁用不必要的服务和端口,以及定期更新到最新版本以修补已知安全漏洞。 3. **目录遍历攻击**:...
在IT行业中,Tomcat是一个广泛使用的...这将允许你的应用根据需要提供安全或非安全的访问方式,为用户提供更好的安全体验。在部署时,确保考虑所有安全最佳实践,如定期更新证书,使用强密码,并限制对密钥库的访问。
作为一个轻量级的Web服务器,Tomcat主要负责处理HTTP请求,提供静态HTML、CSS、JavaScript文件服务,以及动态Java Web应用程序。Tomcat 7.0.57支持Servlet 3.0和JSP 2.2规范,这意味着开发者可以利用这些新特性来...
当一个HTTP请求到达时,Coyote适配器接收到请求,将其转化为内部表示,然后传递给Catalina进行处理。处理过程中,请求会经过一系列的过滤器,最后由对应的Servlet处理,完成业务逻辑后,响应结果再通过类似的路径...
AJP主要用于Tomcat与Apache HTTP Server之间的通信,而HTTP协议则用于处理外部客户端请求。通过选择合适的协议,可以进一步提高系统的通信效率。 ##### 3.3 Tomcat运行模式的选择 Tomcat支持三种运行模式:BIO、...
例如,你可以通过修改`<Connector>`元素来调整Tomcat处理请求的方式,如调整线程池大小、启用或禁用SSL等。在`<Context>`元素中,可以定义Web应用程序的部署路径和属性。 对于“抓包”和“抓接口”的概念,这通常...
此防攻击版可能已经禁用了不常用且可能存在风险的请求方法,仅保留了基本的GET和POST方法,以降低服务器暴露的安全风险。 4. 字符过滤:字符过滤是为了防止SQL注入、跨站脚本(XSS)等攻击。服务器可能会对输入数据...
1. **Catalina**:这是Tomcat的核心,实现了Java Servlet和JavaServer Pages技术,负责处理HTTP请求和响应。 2. **Jasper**:这是JSP编译器,负责将JSP文件转换为Java源代码,然后编译成Servlet。 3. **Connector*...
1. **客户端发起HTTP请求**:客户端通过浏览器等工具向Tomcat服务器发送HTTP请求。 2. **Connector接收到请求**:Connector组件负责监听网络连接并接收客户端请求,然后将请求解析成内部协议。 3. **分发到合适的...
- **默认Connector**:默认情况下,Tomcat会配置一个HTTP/1.1 Connector,用于处理HTTP请求。 - **配置细节**:讲解了如何配置默认Connector的监听端口、连接超时时间等参数。 - **性能调优**:提供了针对默认...
比如,通过源码分析,可以掌握HTTP连接处理器、NioEndPoint、Http11NioProtocol的初始化和启动过程,了解Tomcat如何处理HTTP请求。对于BIO连接器,由于其缺点导致在高并发场景下表现不佳,Tomcat官方已建议在新版本...
5. **连接器(Connectors)**:Tomcat提供了不同的连接器,用于接收和处理HTTP请求。这些连接器可以选择使用NIO(非阻塞I/O)或BIO(阻塞I/O)模式,以适应不同的性能需求。 6. **部署**:Tomcat6支持通过XML配置...
Tomcat如何处理HTTP请求?** - **接收请求**:Connector接收到HTTP请求后,将其封装成`Request`对象。 - **分发请求**:根据URL找到对应的Host和Context容器。 - **调用Servlet**:Context容器负责找到合适的...
1. **Java Servlet**: Java Servlet是Java编程语言中的一个接口,允许服务器端程序扩展其功能,特别是处理来自客户端(如浏览器)的HTTP请求。Tomcat作为Servlet容器,负责加载Servlet类,执行服务请求,并将结果...
然而,如果一个Web服务器支持TRACE请求且没有正确配置,则可能会导致安全问题,如跨站追踪攻击(Cross-Site Tracing Attack),攻击者可以通过这种方式获取到其他用户的敏感信息。 **解决方案**: 1. **开启Apache...
- **默认配置**:默认情况下,Tomcat并未启用线程池,这意味着每个HTTP请求都会创建一个新的线程来处理,这显然不是最优的选择。 - **开启线程池**:通过在`server.xml`文件中配置`<Executor>`标签启用线程池功能,...