黑客攻防技术宝典——安全风险与核心防御机制

阅读范围:黑客攻防技术宝典(web实战篇)第一、二章内容



1-Web应用程序安全与风险

没有绝对安全

​ 使⽤ SSL(Secure Socket Layer,安全套接层)技术不能保证Web站点的绝对安全。
​ SSL 为用户浏览器和Web服务器间传输的数据提供机密性与完整性保护功能,虽有助于防⽌信息泄露,并可保证用户处理的Web服务器的安全性,但不能抵御直接针对某个应用程序的服务器或客户端组件的攻击。

一些常见的漏洞

  • 不完善的身份验证措施
  • 不完善的访问控制措施
  • SQL注⼊
  • 跨站点脚本
  • 信息泄露
  • 跨站点请求伪造

核心安全问题:用户可提交任意输入

​ SSL无法阻止攻击者向服务器提交专门设计的输⼊。
​ 应用程序使用SSL仅仅表⽰⽹络上的其他用户无法查看或修改攻击者传送的数据。

关键问题因素

1. 安全意识不强

2. 开发问题

  • 独立开发或使用的组件包含缺陷
  • 开发工具简化,容易忽视安全问题
  • 受时间和资源限制,缺乏安全测试

3. 形势发展

  • 安全威胁递增
  • 功能需求增加
  • 开发技术过时

安全边界变化

​ 网络资源愈发丰富后,受攻击面的范围也扩大了,从单纯的边界防火墙和主机,逐渐到后端系统和内网,甚至还有各种拓展插件和邮件客户端等。因此,安全边界也在不断变化。



2-核心防御机制

  1. 处理用户访问
  2. 处理用户输⼊
  3. 处理攻击者
  4. 管理应用程序

处理用户访问

三层机制
  • 身份验证
  • 会话管理
  • 访问控制

​ 木桶效应:三层相互关联,相互依赖,任何一个部分存在缺陷都可能使攻击者自由访问应用程序的功能与数据。

最薄弱的机制

​ 应用程序处理用户访问的机制是所有机制中最薄弱的机制。

​ 典型的应用程序使用三重机制(身份验证、会话管理和访问控制)来处理访问。这些组件之间高度相互依赖,其中任何一个组件存在缺陷都会降低整个访问控制机制的效率。例如,攻击者可以利用身份验证机制中的漏洞以任何用户身份登录,并因此获得未授权访问权限。如果能够预测令牌,攻击者就可以假冒成任何已登录用户并访问他们的数据。如果访问控制不完善,则任何用户都可以直接使用应该受到保护的功能。

处理用户输入

注意事项
  1. 限制输入的长度、格式、字符、数据类型等
  2. 接受⼴泛的输⼊,不限制合法请求
  3. 检查cookie等特殊值是否经过篡改
处理方法
  • 设置黑名单

  • 设置白名单

    但不可能始终使用基于白名单的方法进行输入确认

  • 净化恶意字符:删除、编码、转义

  • 检查语法,验证权限

  • 处理后多步确认

  • 编码规范统一

处理攻击者

处理措施
  • 处理错误,向用户报错:但不要返回过于详细的错误信息
  • 维护审计日志,事后调查事件:严格保护,防止披露敏感信息
  • 向管理员发出警报,应急响应:及时应对可将影响降到最低,但涉及到设备的准确性问题
  • 应对攻击:阻⽌显⽽易见的攻击不如修复程序存在的漏洞重要,但不可能修复成完美无缺的系统,所以给攻击者设置更多阻碍,能有效降低深层漏洞被发现和利用的可能。

管理应用程序

管理机制存在的风险
  • 身份认证机制中,被攻击者利用普通用户垂直越权到管理员账户
  • 未执行有效访问控制,通过普通用户权限也可进行管理员权限的操作
管理功能被攻破后的风险
  • 在管理后台未对普通用户数据进行加密
  • 管理员权限过大,可执行危险操作


Q&A

1. 会话与会话令牌有何不同?

会话是服务器上保存的一组数据结构,用于追踪用户与应用程序交互的状态。

会话令牌是应用程序为会话分配的一个特殊字符串,用户需要在连接提出请求的过程中提交该字符串,以重新确认自己的身份。

2. 为何不可能始终使用基于白名单的方法进行输入确认?

许多时候,应用程序可能会被迫接受与已知为“良性”输入的列表或模式不匹配的待处理数据。

例如,许多用户的姓名包含可用在各种攻击中的字符。如果应用程序希望允许用户以真实姓名注册,就需要接受可能的恶意输入,并确保安全处理这些输入。

3. 攻击者正在攻击一个执行管理功能的应用程序,并且不具有使用这项功能的任何有效证书。为何他仍然应当密切关注这项功能呢?

攻击者可以利用任何访问控制核心机制中的缺陷未授权访问管理功能。

此外,攻击者以低权限用户身份提交的数据最终将向管理用户显示,因此,攻击者可以提交一些恶意数据,用于在管理用户查看这些数据时攻破他们的会话,从而对管理用户实施攻击。

原文地址:http://www.cnblogs.com/0dot7/p/16833790.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性