2016-07-24 115 views
1

我想知道是否有可能在創建DOM時「鎖定」DOM並確保JavaScript無法進一步修改它。防止DOM篡改和修改

其目的是保持網頁的完整性。

我相信這是不可能的,但仍然希望有人有一個有趣的想法。

+0

我認爲這是不可能的..你無法控制客戶端。 – StarsSky

+0

不,總之這是不可能的,有些人通過試圖鎖定控制檯來試圖通過默默無聞的安全措施,但這不會阻止有經驗的黑客,因爲沒有確定的開火方式......畢竟這頁是像@StarsSky提到的那樣在客戶端渲染,所以可以用客戶想要的任何方式操縱。 – Stu

+1

儘管如此,您可能希望查看[內容安全策略](https://content-security-policy.com/)以屏蔽您的網站/應用程序儘可能多的已知攻擊媒介。 – CBroe

回答

0

簡短的答案,因爲它已經被@Stu說過:不,這是不可能的。

讓我們先放棄免責聲明:我一直在研究最近3年來關於基於DOM的攻擊,如被稱爲Man-in-the-Browser(MitB)的攻擊。 我所在的公司R & D專注於Web應用程序的完整性。

如你不能「鎖定」的DOM,你能做的最好是限制什麼都可以 訪問和更改:作爲@CBroes說你可以用Content Security Policy (CSP)啓動,以便您的服務器可以 指示瀏覽器是什麼腳本/樣式源是允許的。

在瀏覽器解析之前,CSP的目的可能會被HTTP響應中的HTTP頭或meta 標籤剝奪。 MitB木馬。

Subresources Integrity (SRI)允許你告訴瀏覽器「嘿,我想這 資源當且僅當它的當前散列匹配這個」。您應該使用integrity屬性提供 您知道的散列。如果您正在從遠程位置(如CDN)加載資源,這非常特別:如果他們得到 受損,並且您正在加載的腳本中添加了惡意負載,則您的應用程序將受到攻擊。

至於CSP,例如MitB特洛伊木馬將能夠剝離瀏覽器解析之前的這些屬性 ,然而使用SRI你正在提高吧。

接受的事實,網頁可以合法或通過在運行環境中運行的 東西干擾改變,讓我們(和我的[R & d)去 一個新的水平:實時瞭解有關DOM篡改和能力 區分「自我造成」和惡意/不希望的篡改。

我的R & D已經更進一步了,我很樂意與您分享,但是在側邊頻道上分享 ,因爲它可能在此線索上下文中被錯誤地理解。