2009-10-07 81 views
2

我得到了一個使用jQuery,jQuery工具和一些手工JS運行的圖形增強的網站。雖然它在FF,Safari和Chrome,IE塊腳本執行運行平穩:IE8在什麼情況下阻止Javascript以及如何避免它?

alt text

沒有什麼特別的這個代碼不是,比方說,在Netvibes更危險。

爲什麼還要談論activeX?我正在使用JS。

我該如何預防?我不希望我的用戶點擊「我允許該網站」工作。這就像是把一個巨大的紅色絕對DIV讀數「活得快,永不回來」。

+4

如果您通過文件系統(例如'file:/// C:/ example.html')訪問頁面,而不是Web服務器(例如'http:// server/example.html')。你能排除這種可能嗎? –

+0

上帝,把它寫成答案。我測試它。如果是這樣,那將是SO歷史上最快接受的答案。 –

+0

他甚至沒有把它寫成答案:但他是對的。 – jakeisonline

回答

7

正如Ken Browning在對您的問題發表評論時所說的,當本地頁面位於高安全區域時,此警報發生在JavaScript上。

如果有人將Internet作爲高安全區域,則會彈出警告。

您可以將本地主機添加到Trusted Sites Zone

+3

澄清:IE默認本地文件爲「高安全性」,因爲很容易讓某人下載文件,然後在本地機器上打開它,從而使病毒和網絡釣魚更容易。 默認情況下,'Internet'不是高安全區域,因此JS通常不會被阻止。如果用戶將'互聯網'設置爲高安全區域,任何帶JS的頁面將始終顯示該消息並阻止JS/ActiveX。 – jakeisonline

+0

就是這樣!我等了一會兒,如果肯想要接受,因爲他應該有「接受」 –

+0

它確定,我會說同樣的事情,但他只是打我:) – voyager

8

js無法訪問文件系統,那麼有什麼意義呢?

事實上,JS可以傳統上從我的電腦區域運行一些壞東西,就像安裝ActiveX對象一樣。很多過去的IE漏洞利用這個來利用文件系統訪問進入任意代碼訪問。

因此,面對這個問題,微軟決定解決這個問題,而不是簡單地通過刪除我的電腦區域 - 哦不,這太容易了 - 但增加了一個額外的複雜層。因此,默認情況下,Internet Explorer在鎖定文件系統中的內容時獲得了一個選項,同時允許其他使用嵌入式WebBrowser控件的應用程序像以前一樣繼續,理由是某些應用程序可能依賴於其內部HTML中的鬆散設置接口。

(他們是不是真的,在消費領域,但我們永遠不知道在定製企業應用世界可能存在什麼樣的陰影糾纏的。)

IE的尷尬遭到黑客攻擊所有的時間後, ,通過使文件系統頁面的鎖定設置比來自Intenet的普通網頁嚴格得多,MS過度補償。所以你不能從文件系統的文件中運行JavaScript,因爲沒有特別好的理由。

在這一點上,網絡作者嘶嘶作響,所以MS迴應並沒有通過消除過度鎖定 - 哦不,這太容易了 - 但增加了一個額外的複雜層。所以,現在你可以簡單地在你的文件的頂部放置走出我的電腦區:

<!-- saved from url=(0014)about:internet --> 

這神祕的咒語被稱爲Mark of the Web。最後的換行符必須是一個Windows CRLF,如果您使用簡單的LF行結束符,那麼該CRLF很適合您。包含這個字符串可以讓你進入JScript可以正常工作的Internet區域,但你沒有其他的特殊權限。

有趣的是,從那時起,我的計算機區域中的正常安全設置已經被收緊,因此它與默認的Internet區域幾乎相同。所以最終的結果與他們剛剛擺脫血腥的「我的電腦區域」一樣,只是爲用戶帶來了許多額外的複雜情況,並給網絡作者帶來了麻煩。

非常感謝微軟。

+0

http://blogs.msdn.com/b/ieinternals/archive/2011/03/23/understanding-local-machine-zone-lockdown-restricted-this-webpage-from-running-scripts-or-activex-controls的.aspx –

相關問題