防止DOM篡改和修改

时间:2016-07-24 10:45:44

标签: javascript dom

我想知道在创建DOM后是否有可能以某种方式“锁定”DOM,并确保JavaScript无法进一步修改它。

目的是保持网页的完整性。

我相信这是不可能的,但仍然希望也许有人有一个有趣的想法。

2 个答案:

答案 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更改。

这就是我现在想要做的,如果有人会感兴趣(您能做到),请告诉我