用户认证安全性测试
- 认证与会话管理
-
- 认证--Authentication
-
- [01 常见认证方式](#01 常见认证方式)
- [02 session认证](#02 session认证)
-
- [Session Fixation攻击](#Session Fixation攻击)
- Session保持攻击
- [03 Token认证](#03 Token认证)
- [04 暴力破解](#04 暴力破解)
- 会话--Authorization
- 权限控制
认证与会话管理
认证--Authentication
认证实际上就是一个验证凭证的过程
目的是为了认出用户是谁
01 常见认证方式
02 session认证
- SessionID一旦在生命周期内被窃取,就等于账户失窃
- Session劫持就是一种通过窃取用SessionID后,使用该SessionID登录进目标账户的攻击方法
Session Fixation攻击
Session保持攻击
03 Token认证
多因素认证
因此为了增强安全性,大多数网上银行和网上支付平台都会采用双因素或多因素认证
session和token区别
- session
Session(会话):
1.会话是在客户端和服务器之间建立的持续通信连接,用于跟踪用户在应用程序或网站上的活动状态。
2.会话通常由服务器创建,并与特定用户相关联。
一旦建立,服务器会为用户分配一个唯一的会话标识符(通常是会话 ID)
,识别用户的请求。3.会话通常在用户登录时创建,并在用户退出登录或超时一段时间后销毁。它可以存储用户的临时数据,在用户与服务器之间的多个请求之间共享。
- token
1.令牌是一个用于身份验证和授权的凭证,通常由服务器颁发给客户端
2.令牌可以是
持久的(长期有效)或短暂的(一次性)。
3.在身份验证方面,令牌通常是通过用户名和密码进行身份验证后,由服务器签发给客户端的。客户端在将来的请求中可以使用令牌来证明其身份,
而无需再次提供用户名和密码。
4.在授权方面,令牌可以包含授权信息,`允许客户端访问特定资源或执行特定操作。
04 暴力破解
密码的那些事
密码是最常见的认证手段,持有正确密码的人被认为是可信的
密码的优点是使用成本低,认证过程实现起来很简单
缺点是密码认证是一种比较弱的安全方案,可能会被猜解
"密码强度"是设计密码认证方案时第一个需要考虑的问题
密码设置推荐策略
- 密码长度方面
普通应用要求长度为6位以上
重要应用要求长度为8位以上,并考虑双因素认证
- 密码复杂度方面
密码区分大小写字母
密码为大写字母、小写字母、数字、特殊符号中两种以上的组合
不要有连续性的字符,比如:1234abcd
尽量避免出现重复的字符,比如:1111
- 其他
不要使用用户公开的数据或者个人隐私相关的数据作为密码
会话--Authorization
授权是授予用户可以操作的权限
目的是为了决定用户能够做什么
权限控制
权限管理方式
垂直权限管理
1.使用"最小权限原则"
2.使用"默认拒绝"的策略
3.只对有需要的主体单独配置"允许"的策略
水平权限管理
1.水平权限管理问题,至今仍然是一个难题
2.它难以发现,难以在统一框架下解决
3.很难通过扫描等自动化测试方法将这些问题全部找出