SuperAPI AI 工具集

angular-security

安全与审计

查看项目

更新于 10-15 14:49

技能介绍

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 安全:在渲染后安全地运行代码。

使用方式与最佳实践 资料给出了以下做法与代码示例:

  1. 使用 DomSanitizer 处理安全 HTML:从 @angular/platform-browser 引入 DomSanitizer 与 SafeHtml,通过注入 sanitizer 并调用 bypassSecurityTrustHtml 返回 SafeHtml。
  2. 谨慎使用 bypassSecurityTrust 方法:仅在内容可信时使用 bypassSecurityTrustUrl、bypassSecurityTrustScript、bypassSecurityTrustStyle、bypassSecurityTrustResourceUrl。
  3. 使用带 CSRF 保护的 HttpClient:http.get('/api/data') 会自动使用 XSRF-TOKEN cookie;可通过 provideHttpClient(withXsrfConfiguration({ cookieName: 'XSRF-TOKEN', headerName: 'X-XSRF-TOKEN' })) 配置 CSRF。
  4. 使用 innerHTML 并配合净化:在模板中使用 [innerHTML]="safeContent",Angular 会自动净化。
  5. 避免动态模板求值:不要使用 eval(userInput),改用 Angular 绑定 {{ userInput }}。
  6. 使用内容安全策略:通过 meta 标签设置 Content-Security-Policy,例如 default-src 'self'; script-src 'self'。
  7. 使用 Trusted Types:从 @angular/core 引入 provideTrustedTypes,并在 ApplicationConfig 的 providers 中注册。
  8. 校验用户输入:示例给出一个名为 escapeHtml 的管道,对 &、<、>、" 进行转义替换。
  9. 使用 HttpClient 拦截器处理认证:示例 authInterceptor 通过 inject(AuthService).getToken() 获取令牌,若存在则克隆请求并设置 Authorization: Bearer 头。
  10. 使用路由守卫保护路由:示例 authGuard 通过 inject(AuthService) 与 inject(Router) 判断是否已认证,未认证时返回 router.createUrlTree(['/login'])。

适用场景 适用于 Angular 应用中需要处理用户输入渲染、接口请求安全(CSRF、认证头)、路由访问控制以及 CSP 配置等场景。

限制 资料未提供该技能的安装命令、收费方式、价格、平台支持范围或效果保证等信息,这些内容暂未提供。