2012-10-05 92 views
1

我是一個iOS開發人員,正在研究將本地HTML頁面加載到UIWebView(這是爲本機應用程序提供瀏覽器功能的iOS類)的本機iPhone應用程序的某些安全方面。遠程html文件是否可以將文件下載到客戶端?

如果應用程序加載本地html文件,並且該文件包含指向外部html文件的鏈接,那麼該外部文件是否可以將文件下載到客戶端(另一個html文件或javascript文件)?我對html/javascript的知識在這方面還不夠詳細。

E.g.如果A.html是文件物理上存在的電話和A.html上包含A HREF到B.html其中B.html是一個服務器上,則有可能是B.html(使用任何手段)來從服務器上的文件(C.htmlD.js等)移動到所述裝置?

+0

我不確定你的意思,你可以提供更多的細節?你在談論JavaScript XMLHttpRequests嗎? – bfavaretto

+0

如果A.html是電話上物理存在的文件,並且A.html包含對B.html的href,其中B.html位於服務器上,那麼是否可以爲B.html(使用任何方法)將一個文件(C.html或D.js等)從服務器移動到設備上? – Gruntcakes

+0

那麼,如果你點擊B鏈接,WebView將顯示B.html。所以它自己移動到了設備上,對吧? –

回答

1

您可能的意思是:HTML頁面是否能夠下載(並可能執行或覆蓋)設備上的內容/代碼?我只是在下面假設。

  • 首先,瀏覽器不應該能夠下載任何東西未經用戶同意。在iOS上,瀏覽器根本無法下載任何內容尤其如此。 (嗯,你其實可以通過對它們的長按下載圖像,但是他們只打算去照片膠捲。任何其他的下載只會失敗。)

  • HTML頁面(和JavaScript,圖片, ...)當然會在瀏覽器或UIWebView顯示它們之前下載到設備,但它們無法訪問文件系統上的任何內容。

  • 更重要的是,由於同源政策,網頁不能訪問任何是其領域之外跨域請求允許這樣做,但他們需要的服務器發送一個特定的頭)。

    說你的網頁是http://mywebsite.com:你不能對http://blah.org的請求,如果它未正確設置,甚至(更危險),以file:///etc/passwd(你有沒有辦法正確安裝)。

  • 我不知道有關本地信息頁,但(至少在桌面版Chrome)本地網頁不能下載的所有什麼。

當然,所有這些都是預期的行爲。

已經有漏洞(this one例如),其中Safari允許到文件系統的非特權訪問的情況,但在大多數情況下,它們已經被蘋果快速修補,你會不會有(和不應該,如果你想避免不必要的頭痛)擔心他們。