目录
7. 了解软件安全测试相关的Cooike,Session,Token
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服务端作用
- 监听客户请求
- 处理客户端的简单请求(一般静态页面)
- 客户端与数据库之间的屏障
- 处理复杂系统的业务和数据库的访问