2017-03-07 229 views
1

爲什麼不能像爲什麼file://路徑總是被視爲跨域?

file:///C:/index.html 

本地頁面發送一個資源

file:///C:/data.json 

請求這是防止因爲它是一個跨源請求,但以何種方式是交叉的起源?我不明白爲什麼這是一個漏洞/阻止。當我想爲JavaScript/HTML中的某個東西創建一個快速實用程序時,它看起來像是一個巨大的痛苦,並且由於這個看似任意的限制,我無法在沒有上傳到某個服務器的情況下運行它。

+0

嗯,這是什麼瀏覽器?我敢說這是一件相當奇特的事情,只有少數人偶然發現的問題。原因很簡單,很少有人在網頁開發中使用文件方案... – arkascha

+0

不是一個真正的答案,但這可能有所幫助:http://stackoverflow.com/questions/18586921/how-to-launch-html-using-chrome -at-allow-file-access-from-files-mode如果你使用的是Chrome瀏覽器 –

+0

@arkascha好吧,我多次遇到它的地方是''CanvasRenderingContext2D':畫布被交叉污染了,原始數據「,當試圖做一些快速的一次性圖像處理實用程序。我當然希望答案不僅僅是「它不應該那樣,而是因爲沒有人關心它被打破了。」 – Mark

回答

3

HTML文件預計是「安全的」。誘騙人們將HTML文檔保存到硬盤上然後打開它並不困難(在這裏,只需打開附加到此電子郵件的HTML文件就可以使許多電子郵件客戶端自動將其安全地保存到tmp目錄並在默認應用程序)。

如果該文件中的JavaScript有權讀取磁盤上的任何文件,那麼用戶將非常容易受到攻擊。

與允許運行宏之前Microsoft Word等軟件提示一樣,這也是一樣的原因。

2

它可以防止惡意HTML文件從硬盤讀取。

在真實的服務器上,您(希望)不會提供任意文件,但在本地計算機上,您可以輕鬆誘騙用戶加載任何您想要的內容。

+0

但是機器上的惡意可執行文件在做同樣的事情時,又是如何發生漏洞的呢?如果惡意文件在您的本地文件系統上,那麼您在那一點上已經成功遭到攻擊,是不是? – Mark

+0

它不比可執行文件更危險,但誘騙用戶下載更容易,而且防病毒更難以檢測到。 – mcrumley

1

瀏覽器設置了安全措施,以確保普通用戶不會增加風險。想象一下,我是一個惡意網站,我有你下載的東西到你的文件系統,看起來像你的常規網站。想象一下,下載的HTML可以訪問文件系統的其他部分,然後通過AJAX或者文件系統的另一個可執行代碼將這些數據發送給我。對於普通用戶來說,這可能看起來像一個普通的網站,只是「開放了一點點奇怪,但我仍然得到它的工作。」如果瀏覽器阻止,它們更安全。

可能會關閉這些標誌(如在此處:How to launch html using Chrome at "--allow-file-access-from-files" mode?),但這對於知識豐富的用戶(「超級用戶」)來說更是如此,並且可能帶有關於瀏覽會話不安全的警告。

對於你所談論的那種場景,你應該能夠啓動一個本地的HTTP服務器 - 可能使用Python,Ruby或node.js(我想Node.js會是一個有吸引力的測試JavaScript基本應用程序的選項)。

相關問題