用户认证安全性测试

用户认证安全性测试

认证与会话管理

认证--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.很难通过扫描等自动化测试方法将这些问题全部找出

相关推荐
程序员阿鹏7 分钟前
双亲委派机制
java·jvm·数据结构·后端
步行cgn24 分钟前
Spring Bean 的生命周期详解
java·后端·spring
ps酷教程32 分钟前
数据权限DataPersmission
java·学习
驭渊的小故事1 小时前
Java 项目-jckson序列化工具
java·开发语言
君顾11 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到功能实现
java·开发语言·健身房
用户3721574261351 小时前
Java 拆分 Word 文档教程:按页、分页符和分节符拆分
java
liyinchi19881 小时前
微信小程序支付遇到“由于小程序违规,支付功能暂时无法使用” 解决办法
java·微信小程序·go
2601_949499941 小时前
工业 POF 器件国产化新思路:芯瑞科技DT‑2532Z 解决安华高 HFBR‑2532Z 供应链卡点
运维·网络·人工智能·科技·光模块
横木沉1 小时前
IntelliJ IDEA 无法识别 Git:Git is not installed 问题解决
java·git·github·intellij-idea