2

我正在开发一个使用Firemonkey的android应用程序。这个应用程序使用Rest向WebApi发出请求并返回json结果。 API已经开发完毕,每个请求都需要发送用户名和密码作为查询字符串来返回数据。我的问题是:在firemonkey(android)中保存敏感数据的最佳方式是什么?当然,使用加密来存储这些数据是首先想到的,但是在firemonkey上有没有任何本地和安全的功能?如何将敏感数据保存为firemonkey中的密码?

+0

这使得毫无意义我在querystring中的纯文本比Android的内部存储更容易受到攻击。 –

回答

0

不要加密密码,当攻击者获取数据库时,他也会得到加密密钥。

只使用散列函数是不够的,只是添加盐没有提高安全性。

取而代之,用随机盐对HMAC进行约100ms的持续时间,并用散列表保存盐。使用功能如PBKDF2,password_hash,Bcrypt和类似的功能。关键是要让攻击者花费大量时间通过强力查找密码。

不要在查询字符串发送用户的密码,它是明文的HTTP连接,使用HTTPS连接将被加密,但可能在服务器端的日志文件

+0

@Zafe您对此有何评论在设备上保存访问令牌? – Marcoscdoni

+0

是的,但根据问题,OP无法控制webservice,它以这种不安全的方式需要证书。 –

+1

@FreeConsulting然后,OP有一个delima,要么让用户处于风险中,要么回推并拒绝贡献。海事组织我们需要停止生产不安全的产品。您是否建议致力于创建让用户处于危险之中的不安全网站? – zaph

1

不要保存它。如果确实需要安全,请根据需要从服务器请求。如果密钥和数据保存在同一台计算机上,则不存在安全加密等问题。

+1

我认为问题是询问如何存储不能从服务器请求的*用户密码。尽管“不保存”在这种情况下仍然是一个有效的答案,但它似乎不是一个非常有用的答案。许多应用程序都提供了记住登录信息的功能,以便用户无需在每次启动时进行身份验证,我认为这个问题只是询问如何执行此操作。 –

+1

@RobKennedy您使用生成的访问令牌。这已经解决了十多年的问题 - 你永远不会在客户端存储密码,也不会加密。 –

+1

所以写下这个答案。 –