http - 从客户端向服务器发送用户名和密码的正确方法

标签 http authentication https credentials

这个问题不是特定于语言的。 我很好奇如何将用户名和密码从网站登录表单正确发送到服务器。

我的猜测是对密码进行哈希处理,将用户名/密码放入 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/

相关文章:

spring - Rest 模板中带有 307 状态代码的空响应实体

c# - Azure 身份验证

swift - 自定义适用于 iOS 的 AWS Amplify 身份验证 UI

python - NoReverseMatch at/rest-auth/password/reset/

https - OpenJDK ARM 上的 HTTP SSL 请求问题

php - Apache 使用 https 全部重定向到 index.php

html - 为什么我们使用相对方案//而不是 http ://or https://?

java - 请求不存在的页面会导致 Spring Web 应用程序中出现空白页面

multithreading - 如何在Delphi中使用管道模式

Drupal 在尝试登录时重定向到 https