React 应用开发过程中,前端安全方面通常存在哪些主要风险?针对这些风险,有哪些具体的防护措施可以在编码层面和实施层面加以应用?
考察说明
考察对 React 开发中常见安全威胁的认知及实际防护能力。
回答思路
- 【回答框架 1】XSS(跨站脚本)是最常见风险。React 默认转义 JSX 中的文本内容,可阻止大多数注入;但通过 dangerouslySetInnerHTML 直接插入 HTML 时,必须对输入做净化处理,例如使用 DOMPurify 库。
- 【回答框架 2】URL 注入风险:使用用户输入构造 href、src 等属性时,应校验协议白名单,如仅允许 http、https、mailto,防止 javascript: 等伪协议执行恶意代码。
- 【回答框架 3】JSON 注入与 CSRF:在将服务端 JSON 数据嵌入页面时,需注意转义特殊字符(如 U+2028/2029),避免破坏脚本;同时避免在请求中携带敏感 token 的常规做法,应使用 CSRF Token 或 SameSite Cookie 等机制。
- 【回答框架 4】第三方库和依赖安全:使用 npm audit 定期检查依赖漏洞,避免使用已知有安全风险的库版本,保持依赖更新。
- 【回答框架 5】敏感信息保护:避免在前端代码中硬编码密钥或令牌,所有敏感操作都应通过后端代理,并实施权限校验。
- 【关键点 1】React 默认转义文本内容,防 XSS 需重点处理 dangerouslySetInnerHTML 和 URL 属性。
- 【关键点 2】使用 DOMPurify 等库净化用户 HTML。
- 【关键点 3】校验 URL 协议白名单,防止伪协议注入。
- 【关键点 4】依赖安全:定期执行 npm audit 并升级修复。
- 【关键点 5】敏感信息不应暴露在前端,应通过后端处理。
- 【易错点 1】错误地认为 React 已全面防 XSS,而忽略了 dangerouslySetInnerHTML 的滥用。
- 【易错点 2】仅在前端进行输入校验,没有依赖后端校验。
- 【易错点 3】忽略第三方库的已知漏洞,导致供应链攻击。