用途
Auth Hardening 用于加固认证系统,防止未授权访问。资料指出,弱认证属于 OWASP A07,并且是通往 PDPA 责任的直接路径——如果攻击者通过弱登录安全访问用户数据,开发者即构成疏忽。其核心规则是:绝不要自己实现加密,始终使用经过验证、具备安全默认值的库。
主要能力
密码哈希
资料给出可接受的算法及配置:
- Argon2id:新项目推荐,memory 64MB、iterations 3、parallelism 4。
- bcrypt:现有项目、广泛支持,cost factor 12+。
- scrypt:Argon2 的替代方案,N=2^17、r=8、p=1。
明确禁止使用:MD5、SHA-1、SHA-256(未加盐与拉伸)、明文。
资料提供了 Node.js、Python、Laravel 的示例代码。Node.js 中推荐使用 @node-rs/argon2 的 hash/verify,或 bcrypt 的 hash/compare(SALT_ROUNDS=12);Python 使用 argon2 的 PasswordHasher(time_cost=3、memory_cost=65536、parallelism=4);Laravel 默认使用 bcrypt,可在 config/hashing.php 中升级为 argon2id(memory 65536、threads 4、time 3)。
JWT 最佳实践
资料使用 jose 库演示签名与验证,密钥至少 256 位。规则包括:
- 访问令牌最长 15 分钟。
- 刷新令牌最长 7 天,存储在 httpOnly Cookie 中。
- 绝不要将 JWT 存储在 localStorage(XSS 可窃取)。
- 始终校验 exp、aud、iss 和 alg。
- 绝不使用 alg: "none",始终指定允许的算法。
- 定期轮换签名密钥。
暴力破解防护
资料使用 rate-limiter-flexible 的 RateLimiterMemory 演示登录限流:15 分钟内 5 次尝试,超出后封锁 15 分钟;失败时返回通用错误信息(不透露邮箱是否存在);成功时重置限流器。
会话管理
资料给出安全 Cookie 设置:httpOnly、secure、sameSite: 'lax'、maxAge 7 天、path 与 domain。并演示:登录时重新生成会话 ID 以防止会话固定;修改密码后销毁该用户所有会话,强制各处重新登录。
认证检查清单
资料列出 10 项检查:密码使用 Argon2id 或 bcrypt(cost 12+)哈希;登录限流(15 分钟 5 次);通用错误信息;登录时重新生成会话;改密后失效所有会话;JWT 15 分钟内过期;刷新令牌存 httpOnly 安全 Cookie;JWT 载荷不含敏感数据;JWT 验证时显式指定算法;重复失败后锁定账户。
使用方式
资料以代码示例和规则清单的形式呈现,开发者可参照示例在 Node.js、Python、Laravel 等项目中实现密码哈希、JWT 签发与验证、登录限流和会话管理,并对照检查清单逐项核查。
适用场景
适用于需要加固登录与认证安全的 Web 应用开发,尤其是处理个人数据的项目。资料特别提及 PDPA 2024 修正案的法律后果:Seksyen 5(1) 和 5(2) PDPA 2010(2024 年修正)规定最高罚款 RM1,000,000、最高监禁 3 年;弱认证导致未授权访问个人数据属于安全疏忽(kecuaian keselamatan)。
限制
资料未提供该技能的安装命令、运行环境要求、版本兼容性、收费或价格信息,也未说明其具体分发形式。以上内容均暂未提供。