我想知道在创建DOM后是否有可能以某种方式“锁定”DOM,并确保JavaScript无法进一步修改它。
目的是保持网页的完整性。
我相信这是不可能的,但仍然希望也许有人有一个有趣的想法。
答案 0 :(得分:0)
@Stu已经说过简短的答案:不,这是不可能的。
让免责声明先行:我一直在研究过去3 关于基于DOM的攻击,例如称为“浏览器中的人”(MitB)的攻击。 我所在的公司R& D专注于Web应用程序的完整性。
你可以“锁定”"你可以做的最好的事情是限制什么可以 访问和更改它:因为@CBroes说你可以从Content Security Policy (CSP)开始,以便你的服务器可以 指示浏览器允许哪些脚本/样式源。
任何可以剥离HTTP标头或Object[]
的内容都可能会破坏CSP的目的
在浏览器解析之前来自HTTP响应的标签,例如MitB trojan。
Subresources Integrity (SRI)允许您告诉浏览器"嘿,我想要这个
资源当且仅当其当前哈希值与此值匹配时才会出现#34;。你应该提供
您使用meta
属性知道的哈希。如果这是特别好的话
你从CDN这样的远程位置加载资源:如果他们得到了
受到攻击并且您正在加载的脚本会添加恶意负载,您的应用程序将受到攻击。
至于CSP,例如MitB木马将能够剥离这些属性 在浏览器解析之前,尽管如此,使用SRI可以提高标准。
接受网页可以合法更改或干扰的事实 在执行环境中运行的东西,允许我们(和我的R& D)去 下一级:关于DOM篡改的实时知识和能力 区分"自我造成的"和恶意/不受欢迎的篡改。
我的R& D已经向前迈进了一步,我很乐意与你分享 在一个旁道上,因为它可能在这个线程上下文中被错误地察觉。
答案 1 :(得分:0)
从理论上讲,您可以使用mutationObserver API监视DOM,并防止/还原DOM更改。
这就是我现在想要做的,如果有人会感兴趣(您能做到),请告诉我