前言

启用了不安全的HTTP方法是常见的安全报错。本文将对八种主要的HTTP方法进行原理及安全性分析,并提供简单的解决方案。

1、HTTP方法安全性分析

1.1 HTTP方法由来

HTTP协议提供了集中请求方式,每种请求方式都有不同的作用,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

1.2 HTTP方法详述

  1. GET方法:GET是最常用的方法,它的作用是获取服务器中的某个资源。如图所示,客户端用GET方法发起了一次HTTP请求,然后服务端将对应的资源返回给客户端。
  2. POST方法:POST请求通常会用来提交HTML的表单,将表单中填好的数据会被传输给服务器,然后由服务器对这些数据进行处理。
  3. PUT方法: 与GET从服务器读取资源相反,PUT方法会向服务器写入资源, 有些发布系统允许用户创建Web页面,并用PUT直接向其传输到Web服务器中。PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,如果那个URL已经存在的话,就用这个资源来替代它。
  4. DELETE方法: 用于删除请求URL上的某个资源,该请求返回状态有以下3种:
    200:表示删除请求被成功执行,返回被删除的资源
    202:表示删除请求被接受,但还没有被执行
    204:表示删除请求被执行,但没有返回被删除的资源
  5. HEAD方法:HEAD方法与GET方法的行为很类似,但服务器在响应中只返回首部。不会返回实体的主体部分。这就允许客户端在未获取实际资源的情况下对资源的首部进行检查。使用HEAD可以在不获取资源的情况下了解资源的情况(比如,判断其类型);通过查看响应中的状态码看看某个对象是否存在;通过查看首部测试资源是否被修改了。服务器开发者必须确保返回的首部与GET请求所返回的首部完全相同。遵循HTTP/1.1规范,就必须实现HEAD方法。[在这里插入图片描述](https://img-
  6. OPTIONS方法:OPTIONS方法请求Web服务器告知其支持的各种功能。可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法(有些服务器可能只支持对一些特殊类型的对象使用特定的操作)。这对客户端应用程序提供了一种手段,使其不用实际访问那些资源就能判定访问各种资源的最优方式。
  7. TRACE方法:客户端发起一个请求时,这个请求可能要穿过防火墙,代理,网关或其他一些应用程序。每个中间节点都可能会修改原始的HTTP请求。TRACE方法允许客户端在最终将请求发送给服务器时,看看他变成了什么样。TRACE请求会在目的服务器端发起一个“环回”诊断。行程最后一站的服务器会弹回一条TRACE响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间HTTP应用程序组成的请求/响应链,,原始报文是否以及如何被毁坏或修改过。
  8. CONNECT方法:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

1.3 HTTP方法安全性解析

(1) GET方法
主要用于向指定的URL(URI)请求资源(资源文件或是数据均可), 可以带参数也可以不带参数, 带参数时,参数是明文传递,你可以在浏览器的地址栏中看到参数名及参数值,get安全性不高,所以常用于安全性要求低的场合,比如登录后请求数据。

(2) POST方法
主要是向指定的URL(URI)提交数据, 通常用于表单发送,所传递的数据或参数不是已明文形式存在的,而是封装后的,因此相对安全系数高,像注册、登录、提交表单都是用该方法实现的。

(3) PUT方法
本身不带验证机制,利用PUT方法可以快捷简单地入侵服务器,上传webshell等其他恶意文件,从而获取敏感数据或服务器权限。

(4) DELETE方法
利用该方法可以删除服务器上特定的资源文件,造成恶意攻击,安全系数极低。

(5) HEAD方法
HEAD和GET本质是一样的,故安全系数不高。

(6) OPTIONS方法
用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。OPTIONS方法可能会暴露一些敏感信息,这些信息将帮助攻击者准备更进一步的攻击。安全系数较低。

(7) TRACE方法
回显服务器收到的请求,为攻击者提供信息,安全系数较低。

(8)CONNECT方法
安全系数较高。

综上所述,为避免对web服务器进行恶意上传、修改、删除等操作,除GET和POST这两种常用的HTTP请求方式外,应尽量屏蔽PUT、OPTION、DELETE、HEAD等请求方式。

2、HTTP请求方式检查

检查服务器是否有使用不安全的HTTP方法,主要有以下2种简单方案。

一:安全扫描工具扫描

一般的安全测试扫描工具均具有检测HTTP方法的功能。

二:手动排查

通过手动发送请求,检查响应头部中给的“allow”字段,查看选项,可以判断支持的HTTP方法。响应头,如图所示:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS
Content-Length: 0
Date: Mon, 25 Jul 2018 10:12:23 GMT

3、不安全的HTTP解决方案

修改WEB应用的web.xml部署文件,插入限制请求方法的代码:

    <security-constraint><web-resource-collection><web-resource-name>fortune</web-resource-name><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>

标签解释:

<security-constraint>用于限制对资源的访问;<auth-constraint>用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;<url-pattern>指定需要验证的资源<http-method>指定那些方法需要验证

结果验证

重启服务后再次请求服务,校验响应头,此问题不再存在。响应头,如图所示:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Allow: GET, POST
Content-Length: 0
Date: Mon, 25 Jul 2018 12:12:23 GMT

【安全问题】启用了不安全的HTTP方法——深度分析及解决方案相关推荐

  1. java wifi定位原理_基于wifi的室内定位方法深度分析.doc

    大连理工大学本科毕业设计(论文) 基于WiFi信号的室内定位方法 Indoor localization method based on the WiFi signal 学 院(系): 软件学院 专 ...

  2. 启用了不安全的 HTTP 方法

    IBM appscan安全漏洞扫描--启用了不安全的 HTTP 方法 appscan修订建议: 如果服务器不需要支持 WebDAV,请务必禁用它,或禁止不必要的 HTTP 方法(动词). <se ...

  3. poi 启用保护后取消_ie11启用增强保护模式开启关闭方法

    ie11启用增强保护模式开启关闭方法 有网友和浏览器之家小编说到,一打开IE11就在那里报错,然后提示崩溃并再次恢复.导致软件无法正常使用是无法忍受的.其实这一切的始作俑者就是 IE11 里的&quo ...

  4. win10小娜_win10锁屏界面启用微软小娜功能的方法

    win10锁屏界面启用微软小娜功能的方法,win10系统自带有小娜功能,但一些用户不知如何启用小娜,其实我们可通过 锁屏界面中启用,不知如何操作的用户,请来看看下面的介绍吧. win10系统小娜助手可 ...

  5. suricata mysql_Suricata启用Hyperscan支持以及Prelude-siem安装方法.md

    # Suricata启用Hyperscan支持以及Prelude-siem安装方法 ## 0x01 安装 Hyperscan ### 1.Hyperscan 安装要求: * GCC 版本大于等于 4. ...

  6. 引导方法深度补全系列—晚期融合模型—1—《Dense depth posterior (ddp) from single image and sparse range》文章细读

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 创新点 实施细节 对比sparse_RGBD tips 方法详解 损失函数 优缺点 总结 创新点 1.提出了基于贝叶斯理论的两步 ...

  7. C#中判断空字符串的3种方法性能分析【月儿原创】

    C#中判断空字符串的3种方法性能分析 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.28  3种方法分别是:string ...

  8. JS中toFixed()方法的问题及解决方案

    JS中toFixed()方法的问题及解决方案 参考文章: (1)JS中toFixed()方法的问题及解决方案 (2)https://www.cnblogs.com/gushen/archive/201 ...

  9. 【已解决】关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案

    [已解决]关于SQL2008 "不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了'阻止保存要求重新创建表的更改'" 解决方案 参考文章 ...

最新文章

  1. 【Sql Server】DateBase-视图
  2. python解码函数_python2和python3的编码encode解码decode函数
  3. 【django】HttpRequest对象
  4. PHP 底层的运行机制与原理 --转
  5. Maven构建生命周期和各种plugin插件
  6. Android Ap 开发 设计模式第四篇:工厂方法模式
  7. 实用设置_华为手机4个冷门实用的设置,都知道的绝对是资深花粉
  8. Bailian2698 八皇后【回溯】
  9. nodejs使用supervisor插件调试效率
  10. cmd进入mysql界面的命令
  11. django连接mysql
  12. 平衡二叉树详解 通俗易懂
  13. 200724 EXCEL
  14. 计算机无法连接到wifi但手机可以使用,电脑连不上wifi而手机能连怎么办
  15. LaTeX复选框实现
  16. 近半数受访企业年度调薪比例在5%以下,约40%企业年度调薪率与上年度相比保持不变 | 美通社头条...
  17. GO使用go get -u “包“: fatal: unable to access ‘https://github.com/..‘: Failed to connect to报错
  18. export命令在Mac Pycharm上如何设置环境变量!_ CodingPark编程公园
  19. PIM协议原理与配置
  20. Linux ffmpeg 一键安装

热门文章

  1. 坚果J10和极米H3S怎么选?对比当贝F3优势大吗?
  2. PS抠图激发视频教程
  3. 一张证件照2元?python一个免费的
  4. 2018年湘潭大学程序设计竞赛G又见斐波那契
  5. 用Java写有关早上的语录,关于早上的励志语录
  6. 石墨文档基于K8S的Go微服务实践(上篇)
  7. 6月30日20点,线上,「B12」聊聊「共享经济」
  8. 先出报表还是先计提所得税_先结转损益还是先计提所得税
  9. 风靡全球,TikTok会是下一个跨境电商巨头吗?怎么申请Tik Tok-MCN呢?(内附详细步骤)
  10. 影视解说怎么配音?几个小技巧来助你一臂之力