Angular Security 是一个针对 Angular 应用的安全技能,资料标注版本为 Angular 21(2025),标签包括 Security、XSS、CSRF、CSP、Sanitization,并引用官方安全指南与 DomSanitizer 文档。
用途 该技能用于在 Angular 应用开发中处理安全相关问题,主要覆盖 XSS 防护、CSRF 保护、内容安全策略(CSP)以及内容净化(Sanitization)。当工作内容涉及 Angular 安全、XSS 预防、CSRF 保护、CSP 或净化时,资料建议使用该技能。
主要能力与 API 变化 资料记录了若干版本相关的 API 变化:
- Trusted Types:Angular 支持 Trusted Types 以配合 CSP。
- HttpClient CSRF:通过 CookieXSRFStrategy 提供内置 CSRF 保护。
- provideZoneChangeDetection 与 untrustedEvents:提供 Zone.js 事件过滤。
- afterNextRender 安全:在渲染后安全地运行代码。
使用方式与最佳实践 资料给出了以下做法与代码示例:
- 使用 DomSanitizer 处理安全 HTML:从 @angular/platform-browser 引入 DomSanitizer 与 SafeHtml,通过注入 sanitizer 并调用 bypassSecurityTrustHtml 返回 SafeHtml。
- 谨慎使用 bypassSecurityTrust 方法:仅在内容可信时使用 bypassSecurityTrustUrl、bypassSecurityTrustScript、bypassSecurityTrustStyle、bypassSecurityTrustResourceUrl。
- 使用带 CSRF 保护的 HttpClient:http.get('/api/data') 会自动使用 XSRF-TOKEN cookie;可通过 provideHttpClient(withXsrfConfiguration({ cookieName: 'XSRF-TOKEN', headerName: 'X-XSRF-TOKEN' })) 配置 CSRF。
- 使用 innerHTML 并配合净化:在模板中使用 [innerHTML]="safeContent",Angular 会自动净化。
- 避免动态模板求值:不要使用 eval(userInput),改用 Angular 绑定 {{ userInput }}。
- 使用内容安全策略:通过 meta 标签设置 Content-Security-Policy,例如 default-src 'self'; script-src 'self'。
- 使用 Trusted Types:从 @angular/core 引入 provideTrustedTypes,并在 ApplicationConfig 的 providers 中注册。
- 校验用户输入:示例给出一个名为 escapeHtml 的管道,对 &、<、>、" 进行转义替换。
- 使用 HttpClient 拦截器处理认证:示例 authInterceptor 通过 inject(AuthService).getToken() 获取令牌,若存在则克隆请求并设置 Authorization: Bearer 头。
- 使用路由守卫保护路由:示例 authGuard 通过 inject(AuthService) 与 inject(Router) 判断是否已认证,未认证时返回 router.createUrlTree(['/login'])。
适用场景 适用于 Angular 应用中需要处理用户输入渲染、接口请求安全(CSRF、认证头)、路由访问控制以及 CSP 配置等场景。
限制 资料未提供该技能的安装命令、收费方式、价格、平台支持范围或效果保证等信息,这些内容暂未提供。