我已经向亚马逊应用商店提交了一份申请,但被拒绝了,详细信息如下:
敏感信息(如密码)以明文形式显示,无需加密
显然,这不是一件好事...不过我已经检查了应用程序的代码。用户的密码作为MD5哈希值存储在私有首选项中(它直接从文本框到MD5哈希值再到首选项,并且没有记录或作为明文写入任何地方。
当我们通过http向Web API发送请求时,我们会发送一个包含用户名的报头,以及一个由以下串接字符串(nonce + timestamp + passwordHash)(沿着其他一些位)组成的哈希。
我假设这与头中的数据有关,但由于这是我们发布的散列的散列(服务器将其与自己知道的密码摘要进行比较),我真的不知道他们为什么会有问题。
如何解决此故障?
2条答案
按热度按时间esyap4oy1#
为了结束这个循环。我最后给亚马逊发了邮件,他们给了我更多的细节...原来我是在注册页面上以明文提交密码的。其他一切都很好。
我们最终获得了SSL证书,并使用https注册了用户,它被批准了。希望这对其他人有帮助:-)
kb5ga3dv2#
你的散列方案被破坏了。通过对密码进行散列,然后像你一样使用散列,你只是重新定义了明文密码。
这样做的一个后果是,任何访问您的数据库的人都可以登录到任何帐户,因为您存储了派生密码的明文。
我要么:
1)在服务器上存储哈希值(使用bcrypt或类似的方法),然后将纯文本密码发送到服务器,并依靠SSL来保证传输安全。
2)使用SRP。但是不要自己实现它。它因难以正确实现而臭名昭著。它很容易出错并以不安全的登录结束。
它们都比您当前的系统更安全。