我正在使用iOS的应用程序,让用户填写他们的密码.然后,密码将通过POST或GET发布到我网站上的
PHP页面. (它必须是明文,因为它在脚本中使用.)
除了HTTPS,有没有办法保护密码?在Obj-C中加密,然后用PHP解密?
注意:用户名不发送…只有密码发布到服务器.
编辑:
为了澄清,David Stratton是正确的…我正在设法防止在公共场所的恶意嗅探器只是读出明文密码,因为它们被发布到服务器.
挑战回应大纲
假设你有单向散列函数abc(实际上,使用md5或sha1加密的强哈希算法,参见:password_hash).
您存储在数据库中的密码是abc(密码盐)(分别存放盐)
服务器生成随机挑战挑战并将其发送给客户端(使用盐)并计算预期响应:abc(challenge abc(password salt))
然后,客户端计算:abc(user_password salt),并应用挑战获取abc(挑战abc(user_password salt)),发送到服务器,服务器可以轻松地验证有效性.
这是安全的,因为:
>密码永远不会以明文形式发送,或以明文形式存储
>发送的哈希值每次更改(减轻重放攻击)
有一些问题:
你怎么知道发送什么盐?那么,我从来没有真正找到一个解决方案,但是使用一个确定性的算法将用户名转换成盐解决了这个问题.如果算法不是确定性的,攻击者可能会找出哪个用户名存在,哪些不存在.这确实需要你有一个用户名.或者,您可以只有一个静态盐,但我不了解密码学来评估该实施的质量.