登录安全测试是确保系统的用户身份验证机制和登录过程的安全性的重要步骤。以下是一些常见的登录安全测试方面的考虑:
- 账号密码验证:验证系统是否能有效地验证用户的账号和密码,包括对密码长度、复杂性和有效性的限制。测试应包括正常和异常情况,如正确的账号密码、错误的账号密码、空密码等。
- 账号锁定和解锁:测试系统是否具备账号锁定机制,即当用户多次尝试错误登录后能否锁定账号。验证解锁账号的操作是否有效,并检查解锁的时间限制是否符合安全策略。
- 多因素验证:如果系统支持多因素验证(如短信验证码、动态令牌等),测试这些验证措施是否正常运作。确保它们有效地提供额外的安全层次。
- 弱密码检测:模拟使用常见的弱密码进行登录,检查系统是否能够识别和阻止这些弱密码。测试系统对密码复杂性要求的有效性,并确保密码强度策略能够有效地保护用户账号。
- 记住我功能:验证“记住我”或“自动登录”功能的安全性。测试系统是否正确处理该功能并保持用户安全,例如合适的会话管理、定期要求重新验证等。
- 账号注销:测试系统是否能够正确处理用户的注销请求,即使在用户注销后,之前的会话令牌也不能再次使用。
- 防止暴力攻击和密码猜测:模拟暴力攻击和密码猜测的情况,测试系统是否能够正确地检测到并防止这些攻击。检查是否有合理的登录失败计数机制和延迟等待机制。
- 输入验证和安全性:测试登录页面是否具备合适的输入验证和安全性措施,如防止跨站脚本攻击(XSS)和SQL注入等。
- 错误处理:测试系统在登录过程中是否提供了合适的错误信息,确保没有敏感信息泄露的风险。
- 会话管理:验证系统在用户登录后会话管理的安全性措施,确保会话令牌的生成、使用和销毁符合最佳实践。
一些测试点
- 用户密码后台存储是否加密
- 用户密码在网络传输过程中是否加密
- 密码是否具有有效期,密码有效期到期后,是否提示需要修改密码
- 不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面
- 密码输入框是否不支持复制粘贴
- 密码输入框内输入的密码是否都可以在页面源码模式下被查看
- 用户名和密码输入框分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面
- 用户名和密码输入框分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改
- 连续多次登录失败的情况下,系统是否会阻止后续的尝试以应对暴力破解
10.同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期
11.同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性
12.是否可以记住密码,记住的密码保存是否加密,记住的密码是否有有效期,过了有效期后是否清空密码
13.是否支持第三方登录
14.密码的强弱性,复杂度校验
15.异地登录校验、更换设备登录校验、登陆信息异常是否考虑账户冻结停用、是否允许第三方平台存储密码
16.是否可以使用登录的api发送登录请求,并绕开验证码校验
17.是否可以用抓包工具抓到的请求包直接登录
18.截取到的token等信息,是否可以在其他终端上直接使用,绕开登录,token过期时间校验
19.登录错误后的提示是否存在安全隐患