样式如

<div [style.background-image]="\'url(\' + image + \')\'">Background</div>
<div [style.transform]="rotate(7deg)"

不再添加

推荐答案

update (2.0.0 final)

import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@Pipe({name: 'safeHtml'})
export class SafeHtml implements PipeTransform {
  constructor(private sanitizer:DomSanitizer){}

  transform(html) {
    return this.sanitizer.bypassSecurityTrustStyle(html);
    // return this.sanitizer.bypassSecurityTrustHtml(html);
    // return this.sanitizer.bypassSecurityTrustScript(html);
    // return this.sanitizer.bypassSecurityTrustUrl(html);
    // return this.sanitizer.bypassSecurityTrustResourceUrl(html);
  }
}

另见https://angular.io/api/platform-browser/DomSanitizer

<div [innerHTML]="someHtml | safeHtml"

update

DomSanitizationService将被重命名为DomSanitizer

original

这应该在RC.2中得到解决

另见Angular2 Developer Guide - Security


Angular2介绍了RC.1中CSS值和属性绑定(如[innerHTML]=...[src]="...")的净化

另见https://github.com/angular/angular/issues/8491#issuecomment-217467582

可以使用DomSanitizer.bypassSecurityTrustStyle(...)将这些值标记为受信任

import {DomSanitizer} from '@angular/platform-browser';
...
constructor(sanitizer: DomSanitizationService) {
  this.backgroundImageStyle = sanitizer.bypassSecurityTrustStyle('url(' + this.image + ')');
  // for HTML
  // this.backgroundImageStyle = sanitizer.bypassSecurityTrustHtml(...);

}

并绑定到此值,而不是不受信任的纯文本字符串.

也可以将其包裹在管道中,如

@Pipe({name: 'safeStyle'})
export class Safe {
  constructor(private sanitizer:Sanitizer){}

  transform(style) {
    return this.sanitizer.bypassSecurityTrustStyle(style);
    // return this.sanitizer.bypassSecurityTrustHtml(style);
    // return this.sanitizer.bypassSecurityTrustScript(value);
    // return this.sanitizer.bypassSecurityTrustUrl(value);
    // return this.sanitizer.bypassSecurityTrustResourceUrl(value);
  }
}
<div [ngStyle]="someStyle | safeStyle"></div>

使用

someHtml = `<a href="#" onClick="alert(document.cookie);">click to see the awesome</a>`;

但仍在工作:-[(正在进行中)

Plunker example(Angular 2.0.0-RC-1)

另见第Angular 2 Security Tracking Issue

还有https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html

Hint about 100

无法使用prop="{{sanitizedContent}}"绑定经过清理的内容,因为{{}}会在分配值之前对其进行stringy处理,这会 destruct 清理.

Css相关问答推荐

主dart 文件未加载Flutter Web

我控制的自定义单选按钮无法重新 Select

text-size-adjust在我的css中曾经在我的手机上的Chrome上工作,停止工作,仍然在我妻子的手机上工作

SVG文本在移动浏览器上增长并溢出

CSS 内联 Flex 和段落换行

CSS 中的 :not(style) ~ :not(style) 是什么?

Tailwind css break-word 在输入字段中不起作用

将框架放入 bootstrap 模式的正确方法是什么?

使用 styled-components,我如何定位组件的子类?

在嵌套的弹性框中创建弹性项目之间的空间

CSS,居中的 div,缩小以适应?

css显示:表格不显示边框

定位背景图片,添加内边距

如何隐藏 Chrome 中 HTML5
元素上默认显示的箭头?

使用边距:0 自动;在 Internet Explorer 8 中

CSS:在图像周围创建白光

thead 和 tbody 之间的间距

Bootstrap 3 Glyphicons CDN

CSS 否定伪类 :not() 用于父/祖先元素

使用 :focus 设置外部 div 的样式?