2011-06-01 61 views
4

我在iOS开发中很新颖,我有以下问题: 在我的代码中,我有一个UITiewController和一个UIText字段,当用户键入视图时它将保存密码。该密码用于验证在前面的服务器:如何在iOS中为objectiveC字符串保护dealloc内存?

UItextField* txtPassword; 
[myClass loginWithPassword:txtPassword.text]; 

使用它之后,我想,以确保没有在内存中的密码的剩菜,所以攻击者将无法进行内存转储的iPhone并从中提取密码。

在windows中,例如我可以使用SeucreZeroMemory函数来填充零区块的内存块。

为iOS做最好的方法是什么?谁负责释放UItextField*字符串,这是否足够?

回答

-1

ok, 通过进入dealloc方法释放您的存储密码的对象。 或通过编写这个[object release]来释放对象完成时的使用。 我希望它能帮助你。

+0

虽然不会立即擦除内存中的密码, – trojanfoe 2011-06-01 08:34:08

+0

right @trojanfoe。但是释放是iphone开发者可以做的唯一的事情。是吗? – Krishnabhadra 2011-06-01 08:39:56

+0

我认为OP在发布之前正在寻找清除内存的东西;就像'memset()'然后释放。 – trojanfoe 2011-06-01 08:44:40

1

你想要的真的不需要,你不需要为你分配的数据写零,以确保它是安全的。原因是没有人可以访问内存,iOS使用地址空间随机化,所以即使有可能获得内存,也很难猜测数据的位置(如果不知道数据的位置在哪里,很难猜测数据究竟是什么,幸运的是RAM在这种情况下没有文件系统)。 第二件事是,如果您使用[foo release]并且您的textfield在此过程中被取消分配,则操作系统将回收内存。现在,操作系统会在将问题提交给问题处理之前,始终使用零填充新的内存页面,因此您不必担心存在只是分配内存的恶意应用程序,希望通过这种方式找到密码。

+0

感谢您的回答。 – Orit 2011-06-13 08:00:43

+0

@JustSid“[i]操作系统将始终用零填充新的内存页面,然后再将它提交给询问过程。”[[需要的文章] – funroll 2012-06-13 21:18:36

+0

@PeterJenkins对不起,这不是怀疑论者。我从WWDC 2010视频中获得了一些有关分配器的深入信息。 – JustSid 2012-06-14 01:25:21

相关问题