OWASP TOP 10

TOP1-注入

注入往往是应用程序缺少对输入进行安全型检查引起的,攻击者把一些包含指令的数据发送给解释器,解释器收到数据后转换成指令执行,常见的注入包括SQL注入、系统命令注入、IDAP注入,xpath注入等

危害:

注入可以导致数据的丢失,或者敏感数据的泄露,有时注入漏洞可以导致主机完全失陷。

防范:

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

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

3、利用白名单来规范输入验证

TOP2-失效的身份认证和会话管理

开发者通常会建立自定义的认证和会话管理方案。但与身份认证和回话管理相关的应用程序功能往往得不到正确的实现,要正确实现这些方案却很难,结果在退出、密码管理、超时、密码找回、帐户更新等方面存在漏洞,这就导致了攻击者破坏密码、密钥、会话令牌或攻击其他的漏洞去冒充其他用户的身份

危害:

可能导致部分甚至全部账户遭到攻击,一旦攻击成功,攻击者就能执行合法的任何操作

检测:

  • 用户身份验证凭证没有使用哈希或加密保护
  • 认证凭证可猜测,或者能够通过薄弱的的帐户管理功能(例如账户创建、密码修改、密码恢复, 弱会话ID)重写
  • 会话ID暴露在URL里 (例如URL重写)
  • 会话ID容易受到会话固定(session fixation)的攻击
  • 会话ID没有超时限制,或者用户会话或身份验证令牌特别是单点登录令牌在用户注销时没有失效
  • 成功注册后,会话ID没有轮转
  • 密码、会话ID和其他认证凭据使用未加密连接传输

TOP3-跨站XSS

危害:

攻击者在受害者访问的浏览器中执行脚本以实现会话劫持、恶意内容植入、重定型等行为

防范:

1、输入验证

2、输入编码

3、设置httponly,禁止js读取页面cookie

TOP4-不安全的对象直接引用

当开发人员公开对内部实现对象(如文件、目录或数据库键)的引用时,就会出现直接对象引用。如果没有访问控制检查或其他保护,攻击者可以操纵这些引用来访问未经授权的数据。

防范:

1、使用基于用户或者会话的间接对象访问,防止攻击者直接攻击未授权对象资源

2、对于不受信任源的访问进行访问控制

3、避免在url或者页面中直接引用内部关键参数

4、验证用户输入和url请求

TOP5-伪造跨站请求(CSRF)

攻击者利用可以预测网站特定操作及浏览器自动发送会话cookie等认证凭证等特点,伪造恶意的请求来诱导受害者访问,导致网站敏感操作被执行。

防范:

1、给每个HTTP请求添加一个不可预测的令牌,保证该令牌对每个用户会话来说是唯一性,避免该令牌在url中暴露出来

2、在关键操作时进行重新认证

TOP6-安全误配置

安全配置错误可以发生在一个应用程序堆栈的任何层面,包括平台,web服务器,应用服务器,数据库,架构和自定义的代码。攻击者通过访问默认账户,未使用的网页,未安装的补丁的漏洞,未被保护的文件和目录等,以获得对系统为授权的访问。

危害:

系统可能在未知的情况下被完全攻破,用户数据可能随时被篡改或者盗走,甚至整个系统被完全破坏。

防范:

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

TOP7-限制URL访问失败(缺少功能级访问控制)

大多数web应用程序在实现UI中可见的功能之前,都要验证功能级别的访问权限。但是,当访问每个函数时,应用程序需要在服务器上执行相同的访问控制检查。如果请求没有得到验证,攻击者将能够伪造请求,以便在没有适当授权的情况下访问功能。

防范:

1、检查管理权限的过程并确保能够容易进行升级和审计

2、默认缺省情况下,应该拒绝所有访问的执行权限。对于每个功能的访问,都需要明确角色授权

3、检查每个功能分配的权限合理有效

TOP8-未验证的重定向和转发

在Web应用中重定向是极为普通的,并且通常重定向所引发的目的是带有用户输入参数的目的url,而如果这些重定向未被验证,那么攻击者就可以引导用户访问他们想要用户访问的站点

同样,转发也是极为普遍的,本质上转发是在同一个应用中对一个新页面发送请求,并且有时是用参数来定义目标页面的。同样,如果参数未被验证,那么攻击者就可以利用其来绕过认证或是授权检查。

危害:

利用重定向可以试图安装恶意软件或诱使受害者泄露密码等敏感信息

防范:

1、避免使用重定向和转发

2、如果使用了转发和重定向,则不要在确定目标时涉及到用户参数。

3、如果无法避免使用目标参数,则应保证目标参数对于当前用户是有效的并已授权。

TOP9-应用已知脆弱性的组件

应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,可能导致严重的数据丢失或服务器接管

防范:

1、识别正在使用的组件和版本,包括所有的依赖

2、更新组件或引用的库文件到最新

3、简历安全策略来管理组件的使用

TOP10-敏感信息暴露

保护与加密敏感数据已经成为网络应用的最重要的组成部分。最常见的漏洞是应该进行加密的数据没有进行加密。使用加密的情况下常见问题是不安全的密钥和使用弱算法加密。

你可能感兴趣的:(OWASP TOP 10)