[Web安全攻防]-(OWASP Top10)

OWASP Top10是什么?

首先介绍下OWASP,开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个非营利组织,不附属于任何企业或者财团,他提供有关计算机和互联网应用程序的公正,实际,有成本效益的信息,其目的是协助个人,企业和机构来发现和使用可信赖软件。

OWASP项目是最具有权威的就是其"十大安全漏洞"(OWASP Top10),OWASP Top 10 不是官方文档或标准,而只是一个被广泛采用的意识文档,被用来分类网络安全漏洞的严重程度,目前被许多漏洞奖励平台和企业安全团队评估错误报告,这个列表总结了Web应用程序最可能,最常见,最危险的十大漏洞,可以帮助IT公司和开发团队规范应用程序开发流程和测试流程,提高Web产品的安全性。

A1 注入injection

将不受信任的数据作为命令或查询的一部分发送给解析器时,会产生注入SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解释器在没有适当授权的情况下执行非预期命令访问数据。

危害:注入可以导致数据丢失或被破坏、缺乏可审计性或拒绝服务。注入漏洞有时候甚至可导致完全接管主机。

常见的注入

  • sql注入
  • -os-shell
  • LDAP(轻量目录访问协议)
  • xpath(Xpath既为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中部分位置语言)
  • HQL注入

如何防范

1、使用安全的API,避免使用解释器

2、输入的特殊的字符进行ESCAPE转义处理

例子:LIKE '%M%' ESCAPE 'E'

使用ESCAPE关键字定义了转义字符"M",告诉DBMS将搜索字符串"%M%"中的第二个百分符(%)作为实际值,而不是通配符。

3、使用白名单来规范化的输入验证方法。

A2 失效的身份验证

通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码,密钥或会话令牌。或者利用其他开发缺陷来暂时性或永久性冒充其他用户的身份。

危害:这些漏洞可能导致部分甚至全部账户遭受攻击,一旦攻击成功,攻击者就能执行合法的任何操作。

如何防范

  • 使用内置的会话管理功能
  • 通过认证的问候
  • 使用单一的入口点
  • 确保在一开始登录SSL保护网页

A3 敏感数据泄露

许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗,身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。

如何防范:

您可以采取多种措施来保护任何敏感数据免遭泄露,这些包括:

  • 实施传输层安全性(TLS)以保护以保护传输中的数据
  • 尽可能避免存储敏感数据,或存储时间超过所需时间
  • 加密所有需要存储的静态数据
  • 通过HTTP严格传输安全(HSLS)或类似指令强制加密

A4 XML外部实体(XXE)

XXE全称XML External Entity attack既XML(可扩展标记语言)外部实体注入攻击

许多较早的或者配置错误的XML处理器评估XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URL文件处理器的内部文件和共享文件,监听内部扫描端口,执行远程代码和实施拒绝服务攻击。

如何防范:

  • 避免对潜在敏感信息进行序列化,并使用不太复杂的数据格式,例如JSON
  • 白名单服务器端输入验证,以避免通过XML文档发送恶意数据
  • 通过XML模式验证传入的XML,即XSD验证
  • 确保定期修补或升级XML库和处理器
  • 在解析器中完全禁用文档类型的定义(DTD)处理(这也可以保护解析器面授DOS攻击)
  • 手动查看XXE代码

A5 失效的访问控制

未对通过身份验证的用户实施恰当的访问控制,攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的账户,查看敏感文件,修改其他用户数据,更改访问权限等。

危害:这种漏洞可以损坏参数所引起的所有数据

如何防范

  • 使用基于用户或会话的间接对象访问,这样可防止攻击者直接攻击未授权资源
  • 访问检查:对任何来自不受信任源所使用的所有对象进行访问控制检查
  • 避免在url或网页中直接引用内部文件名或数据库关键字
  • 验证用户输入和url请求,拒绝包含./ ../的请求

A6 安全配置错误

安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置,不完整的临时配置,开源云存储,错误的HTTP标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所有的操作系统,框架,库和应用程序进行安全配置,而且必须及时修补和升级它们。

危害:系统可能在未知的情况下被完全攻破,用户数据可能随着时间被全部盗走或篡改。甚至导致整个系统被破坏。

如何防范

1、自动化安装部署

2、及时了解并部署每个环节的软件更新和补丁信息

3、实施漏洞扫描和安全审计

A7 跨站脚本(XSS)

XSS攻击全称为跨站脚本攻击

当应用程序的新网页中包含不受信任的,未经恰当验证或转义的数据时,或者使用可以创建HTML或JavaScript的浏览器API更新现有的网页时,就会出现XSS缺陷,XSS让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话,破坏网站或将用户重定向到恶意站点。

危害:攻击者在受害者浏览器中执行脚本以劫持用户会话,插入恶意内容,重定向用户,使用恶意软件劫持用户浏览器等

种类:

反射型,存储型,DOM型

如何防范

  • 验证输入
  • 编码输出(用来确保输入的字符被视为数据,而不是作为html被浏览器所解析)
  • header("X-XSS-Protection:0") //告诉浏览器禁用XSS保护
  • header("X-XSS-Protection:1") //告诉浏览器开启XSS保护

A8 不安全的反序列化

不安全的反序列化会导致远程代码执行,即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击,包括:重播攻击,注入攻击和特权升级攻击。

如何防范:

  • 拒绝来自不受信任来源的序列化对象
  • 仅使用允许原始数据类型的序列化介质
  • 实施数字签名以检查序列化对象的完整性
  • 在反序列化期间强制执行严格的类型约束以检测意外子句
  • 在可能的情况下,在低权限环境中隔离和运行反序列化代码以防止未经授权的操作
  • 记录反序列化异常和失败的实例
  • 监控或限制来自反序列化的服务器或容器和任何传出或传入网络连接

A9 使用含有已知漏洞组件

组件(例如:库,框架和其他软件模块)拥有和应用程序相同的权限,如果应用程序中含有已知漏洞组件被攻击者利用,可能会造成严重的数据丢失或服务器接管,同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御,造成各种攻击并产生严重影响。

如何防范

  • 识别正在使用的组件和版本,包括所有的依赖
  • 更新组件或引用的库文件到最新
  • 建立安全策略来管理组件的使用

A10 不足的日志记录和监控

日志记录和监控不足,再加上与事件响应的集成缺失或无效,使攻击者能够进一步供给系统,保持持久性,转向个多系统,并篡改,提取或破坏数据;

大多数违规研究表明检测违规的时间超过200天,通常由外部而不是内部流程或监控监测到;

如何防范:

  • 在登陆,访问控制失败和服务器输入验证失败期间记录足够用户上下文,并且日志数据保留足够长的时间,这将帮助您发现可疑的活动目录
  • 使用日志管理解决方案易于处理的日志格式
  • 对所有高价值交易实施具有完整性控制的审计跟踪,以避免删除或篡改企图
  • 使用监控和警报及时发现可疑活动并采取措施
  • 引入时间响应和恢复计划以有效应对攻击

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值