2015-10-07 68 views
1

我有一個iOS應用顯示來自後端(亞馬遜S3)的圖像,我想阻止用戶在iOS應用以外查看圖像。保護iOS應用中的圖像

事實上,在後臺發送圖像的Base64表示,要提出的是簡單的,讓我們縮短了一個形象的Base64和我們假設它的表示是:

vQNBX1vW19ekvrrvi7eCqDH04QmUs1i3u4WpXjX3tQ2gh 

如果用戶使用代理,他可以很容易地攔截HTTP調用和查看結果JSON響應這有點像

{ "img" : "vQNBX1vW19ekvrrvi7eCqDH04QmUs1i3u4WpXjX3tQ2gh"} 

有了這些信息,用戶可以將它保存,他將能夠看到它的iOS應用之外。

這就是爲什麼我在考慮「隱藏」真實圖像。爲了簡單起見,我把這個字符串分成兩部分,並將它們反轉; JSON的文件將成爲這樣的事情:

{ "img" : { 
    "part1" : "0HDqCe7ivrrvke91Wv1XBNQv", 
    "part2" : "hg2Qt3XjXpW4u3i1sUmQ4" 
    } 
} 

(當然模糊算法將是更爲複雜和iOS版將負責處理這和重建的真實圖像)

我的問題是:這真的很有效/安全嗎?由於解密算法將在iOS應用程序中進行硬編碼,因此我的感受得到了緩解,發現它會很簡單嗎?

當然這不會阻止用戶拍攝快照,但我對此很好。

+0

您可以將標記類似東西並追加每個URL,然後驗證令牌到服務器端,如果有效令牌然後給出適當的響應,則其他明智的顯示404錯誤頁面用於應用程序外部。 –

+2

1.您是否認爲攻擊者只會使用自己的代碼從服務器獲取圖像數據? 2.如果您使用https和證書鎖定,攻擊者將無法插入代理。 3.您是否擔心有用戶濫用其i設備和/或未設置PIN碼的用戶?如果不使用加密和密鑰鏈。 4。WRT一個家庭BREW解決方案:\t [「Schneier的法」(https://www.schneier.com/blog/archives/2011/04/schneiers_law.html):「任何人都可以創造一個安全系統太聰明瞭,他或她想不出如何打破它。 – zaph

回答

1

如果@ zaph建議您使用嚴格的HTTPS和證書鎖定,那麼用戶將無法使用代理或其他網絡監視工具查看傳輸中的圖像。

如果您只允許經過身份驗證的客戶端下載映像並使用某種合理的身份驗證方法,則可以將能夠訪問映像的人員限制爲經過身份驗證的用戶。

如果您使用從用戶的身份驗證密鑰或客戶端與服務器之間共享的其他祕密派生的某個密鑰對服務器端的圖像進行加密並將其解密爲客戶端,並且以這種方式導出密鑰該推導既不明顯又計算困難,那麼你會混淆編寫腳本的用戶下載圖像。

如果你實現了所有這些,你可以讓事情變得困難,絕大多數用戶無法或不夠小心地檢索圖像。然而,堅定的用戶仍然會通過努力和/或資本的支出來拉出圖像。最終,他們將能夠編寫腳本來下載圖像並刪除您實施的任何加密/模糊處理;那裏至少有像你一樣聰明的攻擊者。你所希望的最好的方式是儘可能地讓它變得耗時,困難和昂貴,這樣聰明的攻擊者就不會被困擾。

+1

是「費時」又名「工作因素」。 – zaph

+0

謝謝!事實上,在以https conjonction,因爲我不想讓我的用戶進行身份驗證,我會使用匿名令牌自動販賣機(http://aws.amazon.com/articles/4611615499399490) – Max