用途
Security Implementation Guide 是一份面向 Web 应用的安全实现指南,定位为「生产可用的 Web 应用安全模式」(Production-ready security patterns for web applications)。它围绕四个方向组织内容:认证(Authentication)、授权(Authorization)、输入校验(Input Validation)以及常见漏洞防护(Common Vulnerability Prevention)。
主要能力
输入校验与清理
资料给出了使用 isomorphic-dompurify 进行 HTML 清理的示例:调用 DOMPurify.sanitize,并通过 ALLOWED_TAGS 限制为 ['b', 'i', 'em', 'strong', 'p']、通过 ALLOWED_ATTR 限制为空数组,封装为 sanitizeHTML 函数。
针对 SQL 注入,资料强调使用参数化查询,示例为:
const result = await db.query(
'SELECT * FROM users WHERE email = $1',
[email] // Never interpolate directly!
);
并附有注释说明「绝不要直接拼接」。
XSS 防护
资料说明 React 会自动转义,因此 <div>{userInput}</div> 是安全的;而 dangerouslySetInnerHTML 属于危险用法,应避免,若使用需配合 sanitizeHTML。同时给出设置安全响应头的示例:使用 helmet,并配置 contentSecurityPolicy 的 directives,其中 defaultSrc 为 ["'self'"],scriptSrc 与 styleSrc 均为 ["'self'", "'unsafe-inline'"]。
认证
密码哈希部分使用 bcrypt,saltRounds 设为 12,提供 hashPassword 与 verifyPassword 两个异步函数,分别调用 bcrypt.hash 与 bcrypt.compare。代码中带有 // allow-secret 标记。
限流部分使用 express-rate-limit,给出 loginLimiter 配置:windowMs 为 15 * 60 * 1000,max 为 5(5 attempts),message 为 'Too many login attempts',standardHeaders 为 true,legacyHeaders 为 false,并挂载到 app.post('/api/login', loginLimiter, loginHandler)。
CSRF 防护
使用 csurf,配置为 csrf({ cookie: true })。示例中对 GET /form 路由应用 csrfProtection 并通过 req.csrfToken() 渲染表单中的 csrfToken;对 POST /process 路由应用 csrfProtection 作为受保护端点。
集成点
资料列出的互补技能包括:security-threat-modeler(用于威胁分析)、backend-implementation-patterns(用于安全 API)、verification-loop(用于安全检查)。
适用场景与限制
该指南适用于需要在 Web 应用中落地认证、输入校验与常见漏洞防护的开发者,示例基于 Node.js/Express 生态(bcrypt、express-rate-limit、csurf、helmet)以及 TypeScript/React 前端。关于授权(Authorization)部分的具体实现细节、支持的平台范围、收费或价格信息,资料中暂未提供。