簡體   English   中英

可能將內存數據從一個ios應用泄漏到另一個?

[英]possible to leak in-memory data from one ios app to another?

前言:我不是iOS開發人員,並且幾乎不了解iOS安全模型。 如果這個問題真的很愚蠢,請原諒我。 :)

考慮一個名為MyApp的應用程序,該應用程序在啟動時會執行以下操作:

  1. 動態分配一塊內存,例如使用malloc()。
  2. 通過網絡加載一些敏感數據並將其存儲在該內存塊中。
  3. 坐在那里無所事事。

現在考慮以下情形:

  1. 用戶啟動MyApp。
  2. 用戶關閉MyApp。
  3. 用戶啟動SomeOtherApp。

我的問題:如果SomeOtherApp也動態分配內存,那么OS返回的緩沖區之一是否可能包含MyApp(現在已關閉)調用所放置的敏感數據?

還是將RAM的內容視為運行應用程序的沙箱的一部分?

從理論上講,一旦用戶關閉了該應用程序(您必須確保該應用程序已關閉,而不僅僅是在后台運行),分配給該進程的內存就會被釋放並返回。

引用ARC教程中的內容:

“啟用自動引用計數后,編譯器將在程序的正確位置自動插入保留,釋放和自動釋放。您不必再為這些擔心,因為編譯器會為您這樣做。”

因此,當應用程序關閉時,將清除對具有某種內存分配的任何對象的所有引用,因為在應用程序不運行時將沒有對象可供引用。

我之所以說您必須確保已關閉它,是因為默認情況下,某些應用在按下主屏幕按鈕時不會關閉,但實際上會繼續在后台運行。 這可能會導致潛在的安全威脅,但可能性很小。 為確保該應用程序仍不保留任何內存,請確保每次實際上都完全關閉該內存。 確保代碼正確完成,並且正在編寫代碼的人員知道並跟蹤他分配的內存。

如果安全性是一個大問題,那么請確保確實分配了所有內存,並在代碼中正確釋放了這些內存。 然后,請確保對內存泄漏進行了瘋狂的測試,而沒有其他方法來確保沒有任何對象躺在一定數量的內存中。

我只想說我不是ARC的內存管理專家,所以最好與其他兩個來源進行核對,以確保我的答案正確。

如果我說錯了,有人打我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM