亚马逊应用商店提交失败:“密码等敏感信息以明文形式回显,未加密”
我已向亚马逊应用商店提交了申请,但被拒绝,详细信息如下:
密码等敏感信息以明文形式回显,无需 加密
显然不是一件好事......但是我已经审查了应用程序代码。用户的密码以 MD5 哈希值的形式存储在私人首选项中(它直接从文本框到 md5 哈希值再到首选项,并且不会以明文形式记录或写入任何地方。
当我们向 Web API 发布请求时(通过 http),我们会发布带有用户名的标头,以及以下连接字符串的哈希值(随机数 + 时间戳 + 密码哈希)(以及其他一些位),
我认为它与标头中的数据有关,但因为它是 a 的哈希值 。我们发布的哈希值(服务器将其与他知道的密码摘要进行比较),我不太确定为什么他们会遇到这个问题,
我该如何解决此故障?
I've submitted an application to the amazon app store, and it was rejected with the following details:
Sensitive information like password is echoed in clear text without
encryption
Obviously, not a great thing ... however I've reviewed the application code. The user's password is stored in the private preferences as an MD5 hash (it goes straight from textbox to md5 hash to prefs, and is not logged or written anywhere as plaintext.
When we post requests to our web API (via http), we post a header with the username, and a hash of the following concatenated string (nonce + timestamp + passwordHash) (along with some other bits).
I assume it has to do with the data in the header, but as it's a hash of a hash that we're posting (which the server compares with its own digest of the password he knows), I'm not really sure why they'd have a problem with that.
How can I troubleshoot this failure?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只是为了结束这个循环。我最终给亚马逊发了电子邮件,他们给了我更多详细信息……原来我在注册页面上以明文形式提交了密码。其他一切都很好。
我们最终获得了 ssl 证书并使用 https 来注册用户并获得批准。希望对其他人有帮助:-)
Just to close the loop on this. I ended up emailing amazon, and they gave me more details ... turns out I was submitting the password in cleartext on the registration page. everything else was fine.
We ended up getting an ssl cert and using https to register the user and it was approved. hope that helps someone else out there :-)
你的哈希方案被破坏了。通过对密码进行散列,然后像您一样使用该散列,您只需重新定义明文密码是什么。
这样做的后果之一是,任何有权访问您的数据库的人都可以登录任何帐户,因为您存储了派生密码的明文。
我会:
1)将哈希值(使用 bcrypt 或类似的)存储在服务器上。然后将纯文本密码发送到服务器并依靠 SSL 来保证传输安全。
2) 使用SRP。但不要自己实现这个。它因难以正确实施而臭名昭著。很容易犯错误并导致登录不安全。
它们都比您当前的系统更安全。
Your hashing scheme is broken. By hashing the password and then using that hash like you do, you just redefined what the plaintext password is.
One consequence of this is that anybody who gets access to your database can login to any account, since you stored the plaintext of your derived password.
I'd either:
1) Store the hash(Using bcrypt or similar) on the server. Then send the plain text password to the server and rely on SSL for transport security.
2) Use SRP. But DON'T implement this yourself. It's notorious for being hard to implement correctly. It's very easy to make a mistake and ending up with an insecure login.
Both of them are more secure than your current system.