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");