mcpField
A
auth-module-builder

auth-module-builder

github.com/patricio0312rev安全63250 次安装41 周前更新
代码仓库

关于 auth-module-builder

面向 Web 应用开发者的认证模块构建技能。内容涵盖路由、中间件、密码处理、JWT 或会话模式,以及针对常见威胁的安全检查。

主要功能

  1. 01定义常见认证路由
  2. 02添加认证中间件
  3. 03使用 bcrypt 哈希和验证密码
  4. 04采用 JWT 或存储式会话
  5. 05实施 Cookie 与 CSRF 防护
  6. 06应对常见认证威胁

适用场景

  1. 01构建登录与注册流程
  2. 02添加令牌刷新和密码重置路由
  3. 03使用 Redis 或数据库存储会话
  4. 04检查认证端点的防护措施

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/patricio0312rev/skills --skill auth-module-builder

安装后在 Claude Code 中输入/auth-module-builder确认已加载。

详细介绍

身份验证模块构建器

实现安全、可用于生产环境的身份验证系统。

核心组件

路由:POST /login、/register、/logout、/refresh、/forgot-password 中间件:authenticate、requireAuth、optionalAuth 安全性:bcrypt 哈希、JWT 签名、安全 Cookie、CSRF 令牌 会话:Redis/DB 存储、过期时间、刷新令牌 威胁:记录常见攻击及其缓解措施

JWT 模式

// Generate tokens
const accessToken = jwt.sign(
  { userId: user.id, email: user.email },
  process.env.JWT_SECRET,
  { expiresIn: "15m" }
);

const refreshToken = jwt.sign(
  { userId: user.id, type: "refresh" },
  process.env.JWT_REFRESH_SECRET,
  { expiresIn: "7d" }
);

// Verify middleware
export const authenticate = async (req, res, next) => {
  const token = req.headers.authorization?.split(" ")[1];
  if (!token) return res.status(401).json({ error: "No token" });

  try {
    const decoded = jwt.verify(token, process.env.JWT_SECRET);
    req.user = await User.findById(decoded.userId);
    next();
  } catch (err) {
    res.status(401).json({ error: "Invalid token" });
  }
};

会话模式

// Express session with Redis
app.use(
  session({
    store: new RedisStore({ client: redisClient }),
    secret: process.env.SESSION_SECRET,
    resave: false,
    saveUninitialized: false,
    cookie: {
      secure: process.env.NODE_ENV === "production",
      httpOnly: true,
      maxAge: 1000 * 60 * 60 * 24 * 7, // 7 days
      sameSite: "lax",
    },
  })
);

密码安全

import bcrypt from "bcrypt";

// Hash password
const hashedPassword = await bcrypt.hash(password, 10);

// Verify password
const isValid = await bcrypt.compare(password, user.hashedPassword);

安全检查清单

  • 使用 bcrypt 对密码进行哈希处理(cost ≥10)
  • JWT 密钥从环境变量中获取,并定期轮换
  • 生产环境中仅使用 HTTPS
  • 使用 httpOnly、secure Cookie
  • 启用 CSRF 防护
  • 对身份验证路由进行速率限制
  • 多次尝试失败后锁定账户
  • 密码重置令牌设有过期时间
  • 新账户需进行电子邮件验证

威胁模型

暴力破解:速率限制 + 账户锁定 令牌窃取:较短的过期时间、httpOnly Cookie、仅使用 HTTPS CSRF:SameSite Cookie + CSRF 令牌 会话固定:登录时重新生成会话 ID XSS:清理输入内容、设置 CSP 标头

评论

支持 Markdown