2014-11-01 38 views
2

在我的iOS應用程序中,我必須加載一個靜態html文件,該文件在Web視圖中包含一些敏感信息。所以我已經將該文件放置在資源文件夾中。我使用這個代碼,將其加載到網絡爭奪:iOS - 資源內容可供公衆使用

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]]; 

[webview loadRequest:[NSURLRequest requestWithURL:url]]; 

這項工作,但由於這個網站包含敏感信息,我們可以看到在越獄設備上的資源文件夾中的所有文件,這似乎是一個大安全問題。

  • 那麼有什麼地方可以存儲這個html文件嗎?
  • 有沒有辦法可以禁用資源文件夾訪問。

回答

0

請勿使用loadRequest,因爲它限制您呈現爲URL的數據(因此僅限於某些文件位置)。 UIWebView也有其他方法:loadHTMLStringloadData。這些允許您加載任意數據,這意味着它可以聲明爲代碼變量並編譯到您的二進制文件中。如果這對於「敏感信息」仍然不夠好,則可以在編譯之前使用對稱密碼對數據進行加密,在加載前立即解密並在加載後立即刪除。密碼密鑰顯然需要成爲你的二進制文件的一部分。您可以通過將實際密碼作爲一些預定義計算的臨時結果(如,最簡單地,存儲在不同位置的其他兩個塊的異或)來進一步混淆。

這一切都只是混淆。如果您的信息非常敏感,以至於值得爲某人逆向設計代碼和/或執行內存轉儲而付出代價,他就會這麼做。您正在嘗試像「臭名昭着的DRM」一樣「保護」。

+0

可以通過服務器進行身份驗證,然後服務器可以將密鑰發送給加密的html文件,密鑰將存儲在鑰匙串中。 – zaph 2014-11-01 21:30:27

+0

如果海報在他的命令中有一些服務器,那麼*文件本身*可以被髮送_assymetricaly_加密,並且不需要任何攻擊。該技術存在,稱爲SSL。海報不想使用它的事實對我意味着,他沒有/不需要涉及任何服務器。 – 2014-11-02 09:15:15