调用sanitizer.sanitize

时间:2016-10-07 09:29:45

标签: angular angular2-template

我有component从服务中获取一些字符串,此servicejson加载其字符串。

由于攻击者可以更改此json(连接到服务器等),因此我希望在显示之前对字符串进行清理,以避免XSS漏洞。

问题是我收到了一条恼人的log消息:

  

警告:清理HTML会剥离一些内容(请参阅http://g.co/ng/security#xss)。

每次我寻找一种方法来删除这条消息时,我发现有人说“绕过消毒剂”,但这实际上不是我想要做的,我需要消毒剂来完成它的工作。

我写了一个在plunkr上运行的简单示例:

@Component({
  selector: 'my-app',
  template: `
    <div [innerHTML]="text">
    </div>
  `,
})
export class App {
  text:string;
  constructor(sanitizer:DomSanitizer) {
    this.text = sanitizer.sanitize(SecurityContext.HTML,"<script>window.alert('XSS')</script>");
  }
}

我正在使用[innerHTML]绑定,因为我需要将<b>hello</b>等内容呈现为 hello

0 个答案:

没有答案