这个问题不是特定于语言的。 我很好奇如何将用户名和密码从网站登录表单正确发送到服务器。
我的猜测是对密码进行哈希处理,将用户名/密码放入 POST 正文中,然后通过 HTTPS
发送。什么是更好的方法?
为了更好的衡量,我会提到一个不太理想的方法:
http://www.somesite.com/login?un=myplaintextusername&pw=myplaintextpassword
最佳答案
重要的部分是您在 POST 正文中传输表单数据(这样它就不会缓存在任何地方,通常也不会存储在任何日志文件中)并使用 HTTPS(这样,如果您有一个好的 SSL/TLS 证书,没有人可以从观察您的网络流量中嗅出密码)。如果这样做,对密码进行散列处理不会带来额外的好处,至少在传输过程中不会。
那么人们为什么要谈论散列密码呢?因为通常您不希望在服务器端数据库中以明文形式存储用户密码(否则服务器受到威胁的影响会比其他方式更糟)。相反,您通常存储加盐/散列形式,然后将相同的加盐/散列应用于通过表单数据接收的密码,以便您可以比较两者。
有关加盐的更多信息,请参阅 http://en.wikipedia.org/wiki/Salt_(cryptography) (以及那里的链接)。
关于http - 从客户端向服务器发送用户名和密码的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7562675/