我是Angular的新手,我尝试了解:
@ViewChild指令在没有Elementref的情况下有什么用?
Elementref是否直接访问DOM?或虚拟DOM?
为什么角度小组说:“允许直接访问DOM会使您的应用程序更容易受到XSS攻击。”这意味着Vanila JS由于声称:JavaScript访问DOM是危险的?
答案 0 :(得分:3)
ViewChild
是一个属性装饰器,可帮助您注入对组件或DOM引用的引用。
就您而言,您担心后者。 ElementRef
包装对DOM元素的引用。
Angular提供了用于DOM操作的工具,例如Renderer
-具有内置的清理机制,如果您使用ElementRef
来修改DOM,则需要处理自己的清理机制(因为绕过了为了避免XSS攻击,对Angular DOM进行了消毒)。如果您不修改DOM,从设计上来说就是安全的。
答案 1 :(得分:0)
我不同意使用DOM直接冒XSS攻击的风险。
毕竟,Angular runtime正在这样做!另外,客户端独有的服务器提供给浏览器的任何内容。服务器与浏览器之间没有任何关系。
在这一点(第2点),服务器完整性存在更大的问题。重点是,直接修改dom是每个网站的工作(DOM解析html),而Angular运行时会进行广泛的修改,因为它构建每个元素,而不是DOM解析html表。
我知道很多人会为此而发火。