HTTPS URL中的用户名和密码是否安全?

时间:2018-03-27 09:34:18

标签: security https

我正在我的脚本中向网址https://username:password@example.com发送POST请求。我知道HTTPS加密凭据,因此它们不应该在网络上可见。

但是服务器日志呢,它们会在那里可见吗?

使用这种方法还有其他缺点吗?

如何在客户端/服务器端使身份验证更安全?

1 个答案:

答案 0 :(得分:3)

您可以在此处找到更多信息:Are HTTPS URLs encrypted?(tl; dr:您发送它的方式最有可能未加密,但您可以将凭据作为URL参数发送,以使其加密)。< / p>

接下来,如果您已开发服务器/处于控制状态,则由您决定是否保留日志。如果您不确定,可能会有日志。保存日志(特别是明文,但不仅仅是密码)不是一个好习惯。

服务器不应以明文形式存储密码。相反,密码应该与一些随机盐一起存储(更多信息在这里:https://security.stackexchange.com/questions/111893/how-to-use-password-salt-the-right-way),而不是明文形式。例如,可以使用诸如PBKDF2Rfc2898DeriveBytesArgon2password_hashBcrypt之类的功能。它们比盐渍哈希(https://security.stackexchange.com/questions/51959/why-are-salted-hashes-more-secure-for-password-storage)更有优势,它们还会增加一些额外的CPU时间(约100毫秒),延迟正在尝试蛮力攻击的攻击者,因此它们应该是首选(感谢{{3更新)。

通常,如果服务器受到攻击,读取日志只是攻击者获取用户信息的一种方式。一旦您已经使用SSL并且发送凭证作为域名的一部分(因此,以明文形式),增强身份验证安全性就会使攻击者远离您的服务器。使用盐渍哈希是必须的(因此,如果发生违规,用户密码仍然安全),从那时起,它实际上取决于您的预算。不可能实现完美的安全性,但是您采取的对策越多,您的服务器就越难以受到攻击。但这是一个巨大且非常有争议的话题,无法在StackOverflow答案中进行总结。

编辑:根据zaph的评论更新以修复当前的密码存储最佳做法。

相关问题