XSS攻擊指的是通過對網頁註入可執行客戶端代碼且成功地被瀏覽器執行,來達到攻擊的目的,形成了一次有效XSS攻擊,一旦攻擊成功,它可能會獲取到用戶的一些敏感信息、改變用戶的體驗、誘導用戶等非法行為。
AngularJS 提供了 ng-bind-html 指令來動態綁定HTML文本,但是; 這個指令 (ng-bind-html ) 在 Angular 2.0 以後已經不再支持了, 而是改用 innerHtml 屬性賦值的方式。
.ts
htmlData: string = '';
this.htmlData = '<div>this system test</div>';
.html
<div [innerHTML]= "htmlData" ></div>
實際使用時發現 HTML 片段中的樣式 CSS 會被忽略
解決方法:
可使用 DomSanitizer 將其轉化一下。這裡定義了一個 Pipe,具體如下:
import { Pipe, PipeTransform } from "@angular/core";
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({ name: 'safeHtml' })
export class SafeHtmlPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) { }
transform(value) {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
則可以實現對展示內容的自定義樣式。
htmlStr = `
<h1>innerHtml內容</h1>
<h2 style="color: #1b75bb;">自定義樣式</h2>
<div htmlstr="" innerhtml="" safehtml="">
`;
沒有留言:
張貼留言