2013-08-04 76 views
1

如果要构建一个发送一系列电子邮件的应用程序,应用程序必须暂时存储用户的密码,如果有的话,最安全的做法是什么?如果不是,你会推荐什么?如何安全地临时存储密码?

+0

我不认为有任何。密码必须在内存中的某处才能使用,因此在某种程度上很容易受到攻击。如果您正在谈论磁盘存储,则可以使用AES或Blowfish等加密算法,然后再解密。 – Jori

+0

什么是暂时的?如果将它存储在内部存储上,它可以永久保留 - 您只需要在应用程序删除之前就终止它。 – zapl

+1

您可以更改服务器或是用户名/密码唯一可用的身份验证吗?如果您可以更改服务器,请使用一次密码来获取访问令牌并将其用于验证单个邮件。访问令牌可以从服务器端失效,而密码不能(没有可用性影响)。在内存中加密密码并不会给您带来太多好处,因为您还需要将密钥存储在设备上......还可以将令牌限制为仅发送邮件,因此重要的其他功能是安全的(更改密码等)。 – dst

回答

1

只要你不通过互联网发送密码,它应该不是真的很重要。如果你想要更安全一些,你可以将密码存储在一个字符串中,然后在不再需要它的时候,用相同长度的字符串覆盖它。

+0

为什么要特别使用相同长度的字符串?不会将字符串变量分配给任何字符串工作? – mark

+0

存储密码确实很重要。如果设备丢失是至关重要的,那么窃取将获得用户的明文密码,因为它们通常由常规用户在其他服务上使用(令人伤心的事实),另外,真实用户应该能够撤消其身份验证而无需物理访问它。 – dst

+0

我的歉意。我相信通过临时存储它,他意味着将它存储在内存中,不会被持久存储。至于覆盖它,你将需要一个更大或相等长度的字符串。服务器最好接受密码的散列版本,因此可以存储密码,而不是明文。 – bjc2406

1

您可以使用设备的共享首选项以字符串形式存储和检索密码。一旦完成,该字符串可以从首选项中删除。

+0

是不是其他应用程序能够访问它? – mark

+0

不是说我知道每个应用程序在存储应用程序数据的设备中都有其自己的目录,这应该不重要,您只是短时间存储数据 –