十大应用安全威胁

本文详细介绍了OWASP(开放式网络应用安全项目)2013年发布的十大应用安全威胁,包括注入、失效的身份认证和会话管理、XSS攻击等,并提供了风险评估标准和防御措施。通过风险=可能性*影响的公式,强调了每个威胁的严重性,还涵盖了如何防止SQL注入、密码策略、XSS防护和敏感信息泄露等关键点。

常见应用安全威胁(OWASP TOP 10) 2013

  1. 注入
  2. 失效的身份认证和会话管理
  3. 跨站脚本攻击(XSS)
  4. 不安全的直接对象引用
  5. 安全配置错误
  6. 敏感信息泄露
  7. 功能级访问控制缺失
  8. 跨站请求伪造(CSRF)
  9. 使用含有已知漏洞的组件
  10. 未验证的重定向和转发

风险评估标准

在这里插入图片描述
风险 = 可能性 * 影响
颜色越深,说明越容易发生,影响越大

1. 注入

SQL注入就是将表单中的数据提交到应用程序后台,从而影响预定义的SQL命令执行
一个成功的SQL注入会导致下列结果

  • 从数据库读取敏感信息
  • 修改数据库的内容
  • 执行数据库的一些administration操作 1
  • 执行OS命令2

例子: username= " " 输入 or1=1or1= 这就是一个恒真命令

什么是注入: 用户的输入进入解释器
影响:

  • CRUD数据
  • 拖库
  • OS命令
黑名单方法

最容易但同时也是最不牢靠

白名单方法

只接受我定义过的值

初级防御
  • 参数化查询
  • 存储过程
  • 输入转义
额外防御
  • 最小特权
  • 白名单
2. 失效的身份认证和会话管理
 1. 验证  ----你是谁?
 2.    授权	----你能做什么?
  • 密码 → 密码短语
  • 令牌 →ATM卡
  • 指纹 →生物特征
会话之Cookie管理
  • Path -受限
  • Domain -空值
  • secure
  • httponly
  • expires
密码策略
  • 最小长度
  • 必须包含大小写
  • 必须包含数字
  • 必须包含特殊字符
  • 密码过期
  • 密码恢复(即找回密码)
防止暴力破解
  • 锁定账户 -----超出给定的次数的登录失败而锁定账户
  • CAPTCHA ------阻止机器进行登录尝试
3. XSS(跨站攻击)

反射式: Pay load注入到session/request中
存储式: Pay load保存在数据库中
基于DOM: Pay load直接在客户端执行

XSS能干嘛?

  • 盗取会话Cookie
  • 修改当前网站的内容
  • 执行有害的JavaScript代码
  • DoS/DDoS攻击
  • 钓鱼
  • 组件僵尸网络(BEEF)
    如何应对XSS
  • 白名单 输入验证型
  • ESAPI 输出编码型
4. 不安全的直接对象引用

当开发者把一个内部引用暴露出来的时候,比如:文件名,文件路径,数据库主键,URL或表单参数,攻击者可以操纵这些引用来访问他本来没有权限访问的资源,从而造成越权访问
应对

如果可能的话,尽量不要暴露内部的直接对象应用
使用难以预测的Key,如GUID
使用哈希令牌增加完整性校验
最后,在服务器端进权限检测

5. 安全配置错误

常犯的错误:

产品环境没有更改初始密码
没有加固操作系统/数据库/应用服务器/Web服务器等

影响:

后门
非授权访问数据

系统加固

安全基线

漏洞扫描

扫描工具(Nessus)

6. 敏感信息泄露

常犯的错误:

存储时
传输时

影响:

敏感/私人信息泄露
客户生气(信誉降低)

架构设计

哪些时敏感数据

采取保护

文件,数据库(字段)加密

标准化

使用已有的加密算法
密钥管理系统

该怎么做
采取保护

  • SSL/TLS
  • HSTS
  • Key pinning

正确使用

  • TLS1.1,1.2 ,不要使用SSL3 TLS1.0
  • 保护证书
  • 验证证书
7. 功能级访问控制缺失

常犯的错误:

显示你能看到的菜单
客户端控制

影响:

越权访问

该怎么做
服务器端控制

  • 永远在服务器端进行服务控制,而不是客户端
  • 权限检测应该应用到的所有的层

数据权限控制

  • 基于角色的访问(RBAC)
  • 权限控制列表(ACL)
8. 跨站请求伪造(CSRF)

什么是跨站请求伪造

  • 在浏览器中执行了不想执行的动作
  • SessionID attached to request

影响

  • 执行敏感操作
  • 访问敏感数据

该怎么做
随机令牌

  • 表单
  • Ajax的Request header

多次验证

9. 使用已知含有漏洞的组件

开源软件安全现状分析1
开源软件安全现状分析2

常犯的错误:

开发者只关注自己开发的代码
不甚关心使用的第三方代码安全

影响:

漏洞继承
Exploit-db5

该怎么做
自动升级

自动检测最新版本

被动通知

10. 未验证的重定向和转发

常犯的错误:

重定向和灵活
未对目标URL进行校验

影响:

钓鱼
敏感信息泄露

该怎么做
验证目标网站

站内?站外?
白名单 --站外
相对路径 --站内
目标URL 的权限


  1. 数据管理操作 ↩︎

  2. 应用程序有时需要调用一些执行系统命令的函数,如PHP中的SYSTEM,EXEC,SHELL_EXEC,POPEN,PROC_POPEN等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞(OS注入) ↩︎

  3. 数据密钥 (简称DEK),它将数据进行加密,并作为该信息完整性检查的依据 ↩︎

  4. 密钥加密密钥 ↩︎

  5. 一个网站 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值