Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular sanitize和bypassSecurityTrustHtml在角度上有什么区别?_Angular - Fatal编程技术网

Angular sanitize和bypassSecurityTrustHtml在角度上有什么区别?

Angular sanitize和bypassSecurityTrustHtml在角度上有什么区别?,angular,Angular,我想知道以下两者之间的区别: import {Component, SecurityContext} from '@angular/core' export class App { divContent: any; constructor(private sanitizer: DomSanitizer) { this.divContent= sanitizer.sanitize(SecurityContext.HTML, "divContent"); } 并将消毒替换为:

我想知道以下两者之间的区别:

import {Component, SecurityContext} from '@angular/core'

export class App {
  divContent: any;
  constructor(private sanitizer: DomSanitizer) {
    this.divContent= sanitizer.sanitize(SecurityContext.HTML, "divContent");
  }
并将消毒替换为:

sanitizer.bypassSecurityTrustHtml("divContent");
我希望设置div的内部HTML

<div [innerHTML]="divContent"></div>

在这种情况下,使用任一选项都是一样的?

从中,您的问题的简短回答是,
消毒(您当前使用的方法)在大多数情况下是更安全和首选的方法

DomSanitizer.sanitize
将为您清理该值,以便在给定的SecurityContext(示例中为HTML)中使用该值:

引用文件

如果上下文信任某个值,则此方法将展开包含的安全值并直接使用它。否则,值[第二个参数]将在给定上下文中被清除为安全的,例如,通过替换具有不安全协议部分的URL(例如
javascript:
)。实现负责确保在给定的上下文中可以安全地使用该值

DomSanitizer.bypassSecurityTrustHtml
只需绕过安全检查,并假设给定值是安全的HTML。文件规定

仅当绑定的HTML不安全(例如,包含
标记)且应执行代码时,才使用[byPassSecurityTrustHtml]。消毒剂将保持安全HTML不变,因此在大多数情况下不应使用此方法

本质上,
sanitize
确保传递给它的值是安全的,如果它还不安全,则将其转换,如果已经安全,则将其保留,而
绕过securitytrusthtml
盲目相信您提供的HTML是安全的

sanitizer.sanitize(SecurityContext.HTML, "divContent");