2.1 处理用户访问

1、大多数Web应用程序采用三层相互关联的安全机制处理用户访问:

①身份验证

②会话管理

③访问控制

2.1.1 身份验证

1、身份验证机制是应用程序处理用户访问的最基本机制,用于确定其真实身份。

2、传统验证要求用户提交用户名和密码,后来按需求还要验证证书、口令等信息。

2.1.2 会话管理

1、当用户访问时,服务器端会建立一个令牌作为此用户访问识别码,通常将令牌存在HTTP Cookie。

2、攻击者运用生成令牌时的漏洞推测其他用户令牌实现攻击。

3、少数应用程序不发布令牌,二十通过多个请求重复确认用户身份。

2.1.3 访问控制

1、应用程序可支持多种不同用户角色,每种角色有特定权限。

2.2 处理用户输入

2.2.1 输入的多样性

1、应用程序必须接受更广泛的输入来应对输入的多样性。

2、除了用户通过浏览器界面输入的数据外,典型应用程序还会收到大量数据,在服务器端生成,并被传送给客户端,一遍客户端能够在随后的请求中将其返回给服务器。这些数据包括Cookie和隐藏表单字段。

2.2.2 输入处理方法

1、拒绝已知的不良输入:一般使用一个黑名单。但攻击者对输入转码或者转换其他形式躲避黑名单。

2、接受已知的正常输入:白名单,仅包含良性输入的数据,阻止其他数据。

3、净化:可能会接受潜在威胁数据,之后进行净化,防止不利影响。

4、安全数据处理:经常以不安全的方式处理用户提交的数据,确保处理过程绝对安全。

5、语法检查:有时攻击者输入和正常用户输入类似,但动机不同,所以需要确认所提交的账号属于之前提交该账号的用户

2.2.3 边界确认

1、边界确认是一种有效的安全处理模型。服务器端应用程序为每个单独组间或功能单元的输入当作恶意来源处理,除客户端与服务器之间外部边界外,应用程序在每一个信任边界上执行数据确认。

2、用户登录流程

①应用程序收到以后登录信息,表单确认输入合法、且不包含已知攻击签名。

②应用程序执行一个SQL查询,为防止SQL注入攻击,查询前需对用户输入潜在威胁字符转义。

③若成功登录,应用程序将用户资料某些数据传给SOAP服务,为防止SOAP注入攻击,需对用户资料中的任何XML字符编码。(SOAP是基于XML的简易协议,可使应用程序在HTTP之上进行信息交换。或者更简单地说:SOAP是用于访问网络服务的协议。)

④应用程序在浏览器显示账户信息,为防止跨站点脚本攻击,应用程序对植入返回页面的任何用户提交的数据执行HTML编码。

2.2.4 多步确认与规范化

1、一般攻击者或通过多种方式躲避查询,若<script>会被删除则可以用<scr<script>ipt>来躲避。

2、数据规范化就是指将数据转换或解码成一个常见的字符集的过程,但如果时时输入过滤之后才执行规范化,那么攻击者就可以通过使用编码躲避确认机制。

2.3 处理攻击者

2.3.1 处理错误

1、开发人员处理错误尽量不要讲一些重要错误信息展现出,易被攻击者利用,一般要通过try-catch块来处理错误。

2、有效的错误处理措施通常与应用程序的日志机制整合在一起,后者尽可能记录与无法预料的错误有关的调试信息。

2.3.2 维护审计日志

1、审计日志在调查对应用程序的入侵尝试时会发挥巨大作用,帮助开发人员了解实际情况。

2.3.3 向管理员发出警报

1、警报系统既要报告每次的真实攻击又不会生成过多的警报,造成它们被管理员忽视。

2、警报监控的反常事件:

①应用反常

②交易反常

③包含已知攻击字符串的请求

④请求中普通用户无法查看的数据被修改

2.3.4 应对攻击

1、除向管理员发出警报外,许多安全性至关重要的应用程序还含有内置机制,防御潜在恶意用户。

2.4 管理应用程序

1、任何有用的应用程序都需要管理与维护,可帮助管理员管理用户账户与角色,应用监控与审计功能,执行诊断任务并配置应用程序的各种功能。

2.5 小结

1、几乎所有Web应用程序都以某种形式采用相同的核心安全机制,在这些机制中,处理用户访问和用户输入的机制是最重要的机制。当针对应用程序发动攻击时,它们成为主要攻击对象。

2.6 问题

1、为什么说应用程序处理用户访问的机制是所有机制中最薄弱的机制?

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

2、会话与会话令牌有何不同?

答:会话是服务器上保存的一组数据结构,用于追踪用户与应用程序交互的状态。会话令牌是应用程序为会话分配的一个特殊字符串,用户需要在连接提出请求的过程中提交该字符串,以重新确认自己的身份。

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

答:许多时候,应用程序可能会被迫接受与已知为“良性”输入的列表或模式不匹配的待处理数据。例如,许多用户的姓名包含可用在各种攻击中的字符。如果应用程序希望允许用户以真实姓名注册,就需要接受可能的恶意输入,并确保安全处理这些输入。

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

答:攻击者可以利用任何访问控制核心机制中的缺陷未授权访问管理功能。此外,攻击者以低权限用户身份提交的数据最终将向管理用户显示,因此,攻击者可以提交一些恶意数据,用于在管理用户查看这些数据时攻破他们的会话,从而对管理用户实施攻击。

5、旨在阻止跨站点脚本攻击的输入确认机制按以下顺序处理一个输入:

(1)删除任何出现的<script>表达式;

(2)将输入截短为50个字符;

(3)删除输入中的引号;

(4)对输入进行URL解码;

(5)如果任何输入项被删除,返回步骤(1)。

是否能够避开上述确认机制,让以下数据通过确认?

“><script>alert(“foo”)</script>

答:是。如果没有第4步,此机制将是可靠的,能够过滤其旨在阻止的特定项目。但是,由于输入在执行过滤步骤后被解码,攻击者只需要对有效载荷中的选定字符进行URL编码,就可以避开这种过滤:

">

如果首先执行第4步,或根本不执行该步骤,攻击者将不可能避开上述过滤。

黑客攻防技术宝典Web实战篇第2版—第2章核心防御机制相关推荐

  1. 黑客攻防技术宝典Web实战篇第2版—第7章 攻击会话管理

    7.1 状态要求 1.HTTP是无状态的,基于请求-响应模型,每条消息代表一个独立的事物. 2.大多数Web站点实际为Web应用程序,他们允许用户注册登录,购买销售,记住用户喜好,它们可以根据用户的单 ...

  2. 黑客攻防技术宝典Web实战篇第2版—第6章 攻击验证机制

    6.1 验证技术 1.执行验证采用不同的技术 6.2 验证机制设计缺陷 6.2.1 密码保密性不强 1.应用程序常常使用的密码形式 6.2.2 蛮力攻击登录 6.2.3 详细的失败消息 1.尝试不同用 ...

  3. 黑客攻防技术宝典Web实战篇第2版—第5章 避开客户端控件

    5.1 通过客户端传送数据 5.1.1 隐藏表单字段 1.通过对表单中的数据隐藏,暗中更改数值,造成恶意攻击. 5.1.2 HTTP cookie 1.HTTPcookie是通过客户端传送数据的另一种 ...

  4. 黑客攻防技术宝典Web实战篇第2版—第4章 解析应用程序

    4.1 枚举内容与功能 4.1.1 Web抓取 1.利用爬虫可获取页面,即深度搜索技术. 4.1.2 用户指定的抓取 1.用户使用它通过标准浏览器以常规方式浏览应用程序,试图枚举应用程序的所有功能. ...

  5. 黑客攻防技术宝典Web实战篇第2版—第3章 Web应用程序技术

    3.1 HTTP 3.1.1 HTTP请求 1.所有HTTP消息(请求与响应)中都包含一个或几个单行显示的消息头,然后是一个空白行,最后是消息主体(可选). 2.每个HTTP请求的第一行由三部分组成 ...

  6. 黑客攻防技术宝典Web实战篇第2版—第1章Web应用程序安全与风险

    1.1 Web应用程序的发展历程 早期万维网仅由站点组成,显示的是静态文档的信息库. 如今大多数站点是应用程序,服务器与浏览器之间双向信息传递. 随之而来的也有安全威胁. 1.1.1 Web应用程序的 ...

  7. 黑客攻防技术宝典Web实战篇第2版—第10章 测试后端组件

    10.1 注入操作系统命令 1.许多时候,开发者直接向服务器发送操作系统指令,但如果应用程序向操作系统发送用户输入指令,可能受到命令注入攻击.通常所有的注入命令都可在Web服务器的进程中安全运行,使得 ...

  8. 黑客攻防技术宝典Web实战篇第2版—第9章 攻击数据存储区

    9.1 注入解释型语言 1.解释型语言是一种在运动时有一个运动时组件解释语言代码并执行其中包含的指令的语言. 2.编译型语言:它的代码在生成时候转换成机器指令,然后在运行时直接由使用该语言的计算机处理 ...

  9. 黑客攻防技术宝典Web实战篇第2版—第8章 攻击访问控制

    8.1 常见漏洞 1.访问控制漏洞:应用程序允许攻击者执行某种攻击者没有资格执行的操作.各种漏之间的差异在于这个核心漏洞表现方式上的不同,以及检测他们所使用的技巧不同. 2.访问控制分类: ①垂直访问 ...

最新文章

  1. 给Android Studio设置代码字体大小与界面字体样式
  2. (6) ebj学习:ejb使用jpa注解
  3. 开发工具:Git 代码回退功能详解,很实用!
  4. python每行输出5个数_python打印杨辉三角及输出第m行第k个数
  5. 如何网络监测其他计算机关闭445端口,关闭445端口的方法,小编告诉你电脑如何关闭445端口-站长资讯中心...
  6. OA、CRM、进销存集成了,美女也不再愁了
  7. eclipse安装spring boot插件spring tool suite
  8. npm init @vitejs/app 到底干了什么
  9. PPT中的文字怎么填充为图片?学会这个方法少走不少弯路
  10. 多项式算法的常数问题
  11. Spring Cloud技术栈简述
  12. Win10 分页缓冲池 过大
  13. GitHub上Java捕鱼达人源码分析(fishlord)
  14. 头条号如何做原创,老家底都翻出来了,又要被人骂了
  15. [JZOJ 5804] 简单的序列
  16. Nginx学习(四)
  17. 2019几大主流的前端框架,几款目前最热门的前端框架
  18. Arthas 使用以及火焰图
  19. android小米8.0系统拍照并显示,谷歌相机8.0版本被成功提取,可移植到小米、一加等手机上...
  20. 神医“大数据” 甘做幕后英雄

热门文章

  1. 微软发布了Visual Stduio 2010 RTM版本的虚拟机vhd文件,包含样例和动手实验(免费)...
  2. SQL:select case when(转)
  3. Verilog中wire与reg类型的区别(转载自http://www.cnblogs.com/farbeyond/p/5204586.html)
  4. Windows下Maven 环境配置
  5. java项目eclipse上tomcat部署后项目添加不进去
  6. Ranger开源贡献统计
  7. pulsar常用命令
  8. spark的rdd的含义_Spark里边:到底是什么RDD
  9. 3dvary灯光材质为什么不亮_详解CG灯光渲染师的职业技能
  10. Python 爬虫实例(7)—— 爬取 新浪军事新闻