Vie*_*iet 58 security hash http password-protection hmac
所有开发人员都面临的一个非常基本的问题:每当用户提交表单时,密码都会通过网络发送,并且必须受到保护.我开发的网站没有HTTPS.所有者既不想购买SSL证书,也不想对自签名证书感兴趣.所以我想在提交表单时使用Javascript保护通过HTTP发送的密码.
渴望downvoters:如何通过HTTP安全地发送密码?不提供任何合理的解决方案,我处于另一种情况.
如果我使用MD5,可以反转该密码字符串.那怎么样的nonce/HMAC?任何可用的Javascript库吗?或者你有什么建议/提示要解决?提前致谢!
bob*_*nce 78
无法安全地发送密码,用户可以在没有SSL的情况下验证密码.
当然,您可以编写一些JavaScript,通过散列或公钥加密,使密码安全,实现线上传输.但是,用户如何确保JavaScript本身在到达它们之前没有被中间人篡改,将密码发送给攻击者而不是网站,甚至只是破坏了安全性.算法?唯一的方法是让他们成为专家程序员,让他们检查你的页面和脚本的每一行,以确保在输入密码之前它是犹太人.这不是一个现实的情况.
如果您希望密码免受中间人攻击,则必须购买SSL证书.没有其他办法.习惯它.
如果我使用MD5,可以反转该密码字符串.
不......至少不是琐碎的.虽然MD5对它有攻击,但它是一种哈希算法,因此是不可逆转的.你必须蛮力.
但同样,一个中间人攻击者不需要看你的MD5.他可以简单地破坏你发送给用户制作MD5的JavaScript.
Sam*_*eff 24
这里的解决方案是根本不发送密码.使用挑战/回应.
在原始形式中包括一大块随机文本和一个键.根据服务器上的密钥将原始随机文本存储在会话中.当客户端提交表单时,使用JS将随机文本和密码一起散列.然后将用户名,密钥和散列随机文本发送到服务器.请勿发送密码.在服务器上,使用密钥查找原始随机文本,使用存储的密码执行相同的散列操作.如果服务器散列值与客户端散列值匹配,则您知道客户端输入了正确的密码,而没有将密码发送到服务器.
密码是否正确,密钥和随机文本到期,因此每个密码都是一次性使用.
Mic*_*tum 12
如果您真的想深入研究这一点,请查看Diffie-Hellman密钥交换,该密钥交换是为了"允许彼此之前没有相关知识的两方在不安全的通信信道上共同建立共享密钥"而创建的
我不是加密专家,所以如果攻击者同时拥有客户端(JavaScript源代码)和传输机制(数据包嗅探器),我不完全知道它是否真的安全
| 归档时间: |
|
| 查看次数: |
51181 次 |
| 最近记录: |