如果網頁中的腳本能夠獲取到本地文件的完整路徑,會有何安全問題?

我指的是 & 這樣的地方,由用戶來主動選擇文件,並不是指 javascript 來探測用戶目錄。然後如果使用 document.getElementById("File").value 來獲取的時候,並不能獲取到真實的路徑,chrome、IE 里都將路徑用 C:fakepath 代替了:

c:fakepatha.txt

網上的搜索結果是瀏覽器出於安全考慮,不允許網頁腳本訪問本地文件系統。雖然這個理由可以理解,但是 「安全考慮」 具體是怎樣的呢?

假設有方法可以在這種情景下獲取到真實的完整路徑,會產生怎樣的安全問題?有沒有巧妙的辦法能夠利用這一點?


信息安全基本原則之一叫做「最小化」。對提問中描述的場景而言,路徑信息對在應用中是不必要的,那麼就應該屏蔽。

有何安全問題?大的方向是明確的:可能有助於某些攻擊方式。但具體是什麼,也許可以舉出一個兩個例子,但你永遠不知道還有沒有其它的。

好吧,舉一個例子:http://www.nsfocus.net/index.php?act=advisorydo=viewadv_id=54。利用這裡面提到的漏洞,就需要知道文件的完整路徑。


@tombkeeper 那個例子是屬於經典的,我來補充回答下:

1. 本地路徑可能包含用戶習慣信息,比如路徑里可能有用戶名/習慣目錄等,這算是一種小隱私,似乎不傷大雅;

2. 如果input可以用戶拖拽獲取完整本地路徑的話,我記得之前(2年前了大概)有某人demo過這個input利用,腳本自動化去暴力猜測用戶電腦的各種路徑,這樣的話可能可以:

a) 常用軟體探測,比如是否有什麼殺軟,是否有什麼脆弱的軟體等;

b) 磁碟分區探測;

c) 如果惡意js還能跨協議/跨域讀本地內容的話,那就更爽了(這是漏洞結合起來用的魅力);

3. 獲取本地路徑的漏洞歷史上出現N多次,各個瀏覽器都出現過,建議翻翻歷史漏洞記錄(到各瀏覽器漏洞公告頁面去找),總結規律,可以發現新的;


雖然總說安全考慮,但我也沒想出有什麼安全顧慮。從前IE時代也沒聽說因為暴露路徑產生隱患。或許主要是隱私問題。

一家之言。


如果網頁能枚舉你的本地文件名,所有人都會知道你硬碟上有個目錄叫D:/工作目錄/系統文件/驅動程序/intel/Tokyo Hot


這些安全問題常常是一些困難漏洞成功利用臨一腳的助攻


沙盒。 惡意程序的"地獄" Chrome沙盒功能評測_Chrome瀏覽器

電腦給瀏覽器一個假象,讓瀏覽器以為自己在一台真實的電腦里。其實瀏覽器只是在一個黑客帝國里。這個虛擬世界隨便怎麼崩潰,也不會影響真實的操作系統。

不過老版本IE之類的瀏覽器不在題主討論範圍。


推薦閱讀:

學習 Web 安全之前一定要精通 Web 開發嗎?
WEB安全,應該從哪種語言開始入門?
在360的小動作逐漸被曝光、證實後,360的用戶應當如何面對?
如何評價紀錄片《第四公民》?
由於子網掩碼,相同的IP可以指代不同的計算機(見問題說明),那麼傳輸數據是如何正確送達到目的地的呢?

TAG:JavaScript | 網頁瀏覽器 | 網路安全 |