在 Angular 开发中,框架提供了一个名为 DomSanitizer 的安全服务,常用于内容净化与防御 XSS 攻击。该服务包含的方法如下:
export enum SecurityContext { NONE, HTML, STYLE, SCRIPT, URL, RESOURCE_URL }export abstract class DomSanitizer implements Sanitizer {// 过滤潜在恶意代码,可按安全上下文设置过滤类型abstract sanitize(context: SecurityContext, value: SafeValue|string|null): string|null;// 跳过 HTML 安全检查abstract bypassSecurityTrustHtml(value: string): SafeHtml;// 跳过 style 安全检查abstract bypassSecurityTrustStyle(value: string): SafeStyle;// 跳过 script 安全检查abstract bypassSecurityTrustScript(value: string): SafeScript;// 跳过 URL 安全检查abstract bypassSecurityTrustUrl(value: string): SafeUrl;// 跳过资源 URL 安全检查abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl;}为了更好地防止 Angular 中的 XSS 攻击,应当谨慎使用该服务,例如:
// htmlAn untrusted URL:Click meA trusted URL:Click me// jsimport { DomSanitizer } from '@angular/platform-browser';@Component({...})export class DemoComponent {constructor(private sanitizer: DomSanitizer) {}this.dangerousUrl = 'ja vascript:alert("Hi there")';// 手动将该 URL 标记为可信this.trustedUrl = sanitizer.bypassSecurityTrustUrl(this.dangerousUrl);}