目录
1. Web安全的测试范围
2.Web安全的四要素
3. Web安全的分类
4. Web安全的类别排名
5. 零时差攻击
6. Web安全的载体
7. 了解软件安全测试相关的Cooike,Session,Token
7.1 会话级鉴权及认证技术
7.2 会话安全管理需要授权和鉴权两个步骤
7.3 Cookie
7.3.1 Cookie类型
7.3.2 Cookies测试(session测试同)
7.3.3 如何使用Cookie来保持登录状态
7.4 Session
7.4.1 session安全测试的原理
7.4.2 session安全测试的过程
7.4.3 Session的其他测试
7.4.4 如何使用Session来保持登录状态
7.4.5 Session的两种实现方式(也就是传递方式)
7.5 Token
7.5.1 Token概述
7.5.2 使用Token保持会话的原理
7.5.3 JWT
7.6 Session与Cookie的区别
7.6.1 存储位置不同
7.6.2 安全性不同
7.6.3 性能不同
7.6.4 会话的安全管理
7.6.5 其他
7.7 Web客户端的作用
7.8 Web服务端作用
1. Web安全的测试范围
服务器系统的漏洞,权限,网络端口的管理,Tomcat,Apache的配置,浏览器本身的安全配置,web应用程序本身的前端,后端,数据库安全等。
2.Web安全的四要素
安全性
可靠性
可用性
完整性
3. Web安全的分类
web安全性包括但不仅限于下面几个部分,做好系统,数据库,服务器配置的安全测量,提高整体的安全防护等级,确保开发的应用程序遵从安全标准开发。
4. Web安全的类别排名
5. 零时差攻击
0day又叫零时差攻击,是指被发现后立即被恶意利用的安全漏洞,通俗地讲,即安全补丁与瑕
疵曝光的同一日内,相关的恶意程序就出现,这种攻击往往具有很大的突发性与破坏性。
- Oday就是只有你知道的一个漏洞!
- 1day就是刚刚公布的漏洞(没有超过一天)
- nday就是这个漏洞已经公布出来了N天啦!
6. Web安全的载体
web安全的载体是网络协议,而网络协议中最常见的是http协议。
Http协议的性质:
- HTTP是简单的
- HTTP是可扩展的
- HTTP是无状态,有会话的
- HTTP是可靠的
- Web客户端的作用
7. 了解软件安全测试相关的Cooike,Session,Token
7.1 会话级鉴权及认证技术
- cookie管理、
- session会话技术
- token令牌技术
Cookie管理是浏览器的一种策略,用于解决http协议是无状态连接问题的, Cookie可以记录用户浏览历史,辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据。
不管是session会话技术还是token令牌技术都是基于cookie管理进行的。
7.2 会话安全管理需要授权和鉴权两个步骤
- 授权:相当于下发一个通行证(通行证保存cookie管理器)
- 鉴权:鉴定是否有权访问(判断有请求是否正确携带通行证)
7.3 Cookie
7.3.1 Cookie类型
- 会话Cookie:保存在内存中,由浏览器维护,浏览器关闭后消失。
- 持久性Cookie:保存在硬盘里,有过期时间,用户手动清理或到了过期时间,持久性Cookie会被删除。
- Expires属性:Cookie中的maxAge或者Expired用来表示该属性,单位为秒
7.3.2 Cookies测试(session测试同)
- Cookies是否起作用;
- Cookies是否按预定的时间进行保存;
- 刷新对Cookies有什么影响
- 避免保存敏感信息到cookie文件中。如用户名、密码
作用域 不同应用系统不同作用域。下图中为单个应用系统,Path对应的是这个cookie的作用域,斜杠表示根目录,即该条cookeie作用域为整个应用系统
Set-Cookie: access-token=LluyJIfAggsBH_woZgQAledLq3ZJzNwOD501WuvHNdjV5JthEWw; Path=/
- 屏蔽 Cookie,检查当Cookie 被屏蔽时Web 系统会出现什么问题
- 篡改Cookie,如果某些存储下来的Cookie 被篡改了,或者被删除了,Web 系统会出现什么问题吗?优秀的设计则会检测到Cookie 数据的篡改,及时更新替换Cookie 文件
- Cookie 加密测试,检查存储的Cookie 文件内容,看是否有用户名、密码等敏感信息存储,并且未被加密处理。某些类型的数据即使是加密了也绝对不能存储在Cookie 文件中的,例如:信用卡号。
- HttpOnly 属性的设置:把Cookie 的HttpOnly 属性设置为True 有助于缓解跨站点脚本威胁,防止Cookie 被窃取
- Secure 属性的设置:把Cookie 的Secure 属性设置为True,在传输Cookie 时使用SSL连接,能保护数据在传输过程中不被篡改
- Cookie 过期日期设置的合理性:检查是否把Cookie 的过期日期设置得过长
7.3.3 如何使用Cookie来保持登录状态
7.4 Session
- 用户第一次请求服务器时,服务器端会生成一个sessionId
- 服务器端将生成的sessionId返回给客户端,通过set-cookie
- 客户端收到sessionId会将它保存在Cookie中,当客户端再次访问服务端时会带上这个sessionId
- 当服务端再次接收到来自客户端的请求时,会先去检查是否存在sessionId,不存在就新建一个sessionId重复1,2的流程,如果存在就去遍历服务端的session文件,找到与这个sessionId相对应的文件,文件中的键值便是sessionId,值为当前用户的一些信息
- 此后的请求都会交换这个 sessionId ,进行有状态的会话
7.4.1 session安全测试的原理
Session是应用系统对浏览器客户端身份认证的属性标识,在用户退出系统时应将客户端session认证属性标识清空。如果未能及时清空客户端session标识,下次登录时系统会重复利用该session标识进行认证会话。攻击者可以利用该漏洞生成固定的session会话,诱骗用户利用攻击者生成的固定会话进行系统登录,从而导致用户会话认证被窃取。
7.4.2 session安全测试的过程
在注销退出系统时,对当前浏览器授权 SessionID 值进行记录。再次登录系统,将本次授权 SessionID 值与上次进行比对校验。判断服务器是否使用与上次相同的 SessionID 值进行授权认证,若使用相同 SessionID 值则存在固定会话风险.
- 截取注销退出时请求中的sessionid
- 截取再次登录时的sessionid
7.4.3 Session的其他测试
- session的创建时间点,是打开浏览器访问开始创建session?还是用户登陆时开始创建session? 还是其它情况下创建的
- session的删除时间点,过期文件是否删除,关闭浏览器时,session是否会删除?当有多个窗口时,是全部关掉还是关掉一个会删除session?
- session超时,基于Session原理,需要验证系统session是否有超时机制,还需要验证session超时后功能是否还能继续走下去。
测试方法:
1)打开一个页面,等着10分钟session超时时间到了,然后对页面进行操作,查看效果。
2)多TAB浏览器,在两个TAB页中都保留的是用户A的session记录,然后在其中一个TAB页执行退出操作,马上在另外一个页面进行要验证的操作,查看是能继续到下一步还是到登录页面。
- session互窜,即是用户A的操作被用户B执行。
测试方法:
多TAB浏览器,在两个TAB页中都保留的是用户A的session记录,然后在其中一个TAB页执行退出操作,登陆用户B, 此时两个TAB页都是B的session,然后在另一个A的页面执行操作,查看是否能成功。 预期结果:有权限控制的操作,B不能执行A页面的操作,应该报错,没有权限控制的操作,B执行了A页面 操作后,数据记录是B的而不是A的
- Session垃圾回收
- 关闭浏览器同时关闭session
- Session 销毁
- session丢失,代码问题
- 不同浏览器Session的共享机制不一致
IE中,所有打开的IE窗口(IE 进程)共享一个session。除非,用户通过菜单 File > New session 打开新窗口,或者使用命令行参数 iexplore.exe -nomerge 来打开IE。 另外,当所有IE窗口被关闭后,session 结束。
- 服务器端是否设置了最大并发session数量
- 防止由于登录人数过多,造成服务器内存被消耗殆尽或服务器无响应的情况。
- 刷新操作对session是否存在影响
- 登录并进行相关操作后,退出系统,点击浏览器中的后退按钮,是否能回到刚才所做的操作页面
- 登录后,进入一个页面后,能否将该页面地址拷贝后,再打开一个新的浏览器,直接粘贴该页面地址后,就能进行相关操作
- 若后台的网络架构使用了负载均衡,要考虑在同一客户访问的页面被提交到了不同的服务器后,session能否正确共享
例如:用户登陆后的请求被A服务器处理,但是用户接下来的操作却被B服务器处理,此时登录后的session是否能够被正确共享
- 若创建session时,由于环境故障(IE死机,或网络暂时断开等),造成session创建异常或失败,系统会如何反应
- 若创建session时,由于环境故障(IE死机,或网络暂时断开等),造成session创建异常或失败,若环境恢复后,系统是否会自动生成session
- 进行大量用户并发登录时,是否会造成session创建时间延时,导致无法正常创建session
7.4.4 如何使用Session来保持登录状态
7.4.5 Session的两种实现方式(也就是传递方式)
- 通过Cookie实现
- 通过URL重写来实现
7.5 Token
7.5.1 Token概述
7.5.2 使用Token保持会话的原理
- 用户通过用户名和密码发送请求。
- 程序验证。
- 程序返回一个签名的token给客户端。
- 客户端储存token,并且每次用于每次发送请求。
- 服务端验证token并返回数据。
7.5.3 JWT
7.6 Session与Cookie的区别
7.6.1 存储位置不同
Session是存在服务器端的,而Cookie是存在客户端的
7.6.2 安全性不同
Session不会受浏览器端的设置影响,可记录每个访问者的信息,独立在服务器端,比Cookie安全!
Session是存在内存中的,浏览器关闭它也就“死”了;Cookie是以文件方式存在的,可以修改其“存活”时间
7.6.3 性能不同
session 存放在服务端,过多会影响服务器性能,而Cookie是存放在客户端,没有性能影响
7.6.4 会话的安全管理
7.6.5 其他
- 服务端保存状态机制需要在客户端做标记,所以Session可能借助Cookie机制
- Cookie通常用于客户端保存用户的登录状态
- Session是可以存取任何类型的数据的,但是Cookie只能存入字符串
- Cookie存储数据大小有限制,Session没有限制
7.7 Web客户端的作用
- 用来发送HTTP请求
- 接收服务器响应
- 把服务器返回的HTML代码渲染成界面Web客户端来主要是浏览器。
7.8 Web服务端作用
- 监听客户请求
- 处理客户端的简单请求(一般静态页面)
- 客户端与数据库之间的屏障
- 处理复杂系统的业务和数据库的访问