从组件@Input传递安全资源URL到DOM

时间:2017-08-14 08:26:04

标签: javascript angular xss

我有一个组件,其URL(类型为字符串)为@Input。它将该URL传递给其模板中的DOM元素。这将导致错误: unsafe value used in a resource URL context

要绕过此错误,我可以在组件中使用DomSanitizer.bypassSecurityTrustResourceUrl。但是,现在传递给@Input的任何URL(类型为字符串)都会绕过安全性。我希望我的组件的消费者也会收到错误,因为这些消费者负责传递有效且安全的URL。

我尝试使用SafeResourceURL作为@Input的类型,但这会产生与传入字符串相同的行为。

我的组件的一个例子:

@Component({
  selector: "my-svg",
  template: `
    <object
      type="image/svg+xml"
      [data]="url"
      >
    </object>
  `
})
export class MySvgComponent {
  @Input() url: string;
}

我希望上述错误出现在消费者方面,并且当URL来自变量来源时,消费者需要使用bypassSecurityTrustResourceUrl

<my-svg [url]="thisIsAnUnsafeUrl"></my-svg>

0 个答案:

没有答案