SuperAPI AI 工具集

auth-hardening

安全与审计

查看项目

更新于 10-15 10:39

技能介绍

用途

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)。

限制

资料未提供该技能的安装命令、运行环境要求、版本兼容性、收费或价格信息,也未说明其具体分发形式。以上内容均暂未提供。