我最近在做一个项目,遇到了一条线
this.sendImageButton.nativeElement.disabled = true;
这对我来说似乎没问题,直到一位同事指出使用原生元素并不安全。他的意思是,像这样访问元素并不被认为是一个好的做法。我想知道为什么这样访问它不安全?另外,访问它的可能替代方案是什么?
到目前为止,我正在使用渲染器来访问它,但即使它包含一个 native 元素。它和上面提到的有什么不同?
this.renderer.setElementStyle(this.sendImageButton.nativeElement, '背景颜色', "蓝色");
希望尽快得到答复。预先非常感谢。 :)
最佳答案
访问或传递nativeElement
并不是不安全,只是潜在不安全。这取决于你用它做什么。
如果用它来设置innerHTML
,那么你就绕过了 DomSantitizer
例如,当您使用 <div [innerHTML]="someHtml"
时,Angular 会使用。因此,您的应用程序变得更容易遭受 XSS。可能还有其他人。
使用nativElement
并不比单独使用浏览器更不安全,只是您使用它所做的事情决定了它是否会使您的应用程序更容易受到攻击。
如果您访问 nativeElement
的属性喜欢 nativeElement.style...
或nativeElement.className...
您的应用程序将与服务器端渲染(通用)或 Angulars Web Worker 功能不兼容,因为当 Angular 代码在此类环境中运行时,这些属性将不可用。这也是Renderer2
的原因或Renderer
不提供任何从 DOM 读取信息的方法(仅更新 DOM)
关于angular - Angular 2 中的原生元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43993838/