【问题标题】:Is it safe to post password without hashing it to django-rest-api?在不将密码散列到 django-rest-api 的情况下发布密码是否安全?
【发布时间】:2015-10-26 09:23:45
【问题描述】:

Django 表单在表单中使用 CSRF 令牌,甚至在 POST 到 django-rest-api 时也会使用 CSRF 令牌。我有两个关于使用表单发布密码而不通过 HTTP 连接散列的问题 -

  1. 使用 django 表单发布进行身份验证来发布密码是否安全?
  2. 将密码发布到 django-rest-api 是否安全?

【问题讨论】:

    标签: django django-forms django-rest-framework restful-authentication django-authentication


    【解决方案1】:

    散列密码的目的是不可逆地隐藏原始密码。密码散列而不是明文密码存储在数据库中,因此如果数据库被黑客入侵,他们将不知道原始密码。这意味着他们可能知道用户名,但他们将无法访问这些帐户(至少在没有投入资源来破解这些哈希值的情况下不会)。

    回到你的问题,如果你存储密码散列,并且你希望用户提交密码散列,那么它就违背了整个目的,因为密码散列随后也将有效地用作明文密码。

    要回答您的问题,是的,如果密码哈希存储在数据库中,则发布明文密码是安全的。如果您想提高安全性,请使用 HTTPS,以便在传输到服务器的过程中对明文密码进行加密。

    编辑:
    澄清一下,当我说:

    如果存储了密码哈希,则 POST 明文密码是安全的 在数据库中

    我的意思是它不受上面示例中指定的攻击向量(黑客入侵数据库以控制帐户)的影响。

    【讨论】:

    • 在网络中以明文形式传输的任何内容都不是安全的(例如 HTTP)。这就是为什么您应该使用 HTTPS 以便加密进出服务器的 HTTP 流量,并且还会提醒您注意任何中间人攻击。
    • 那么就没有办法防止通过 HTTP 嗅探数据了吗?
    • 没有。 HTTP 本身就是明文流量。这意味着您发送/请求的所有内容都可以在到服务器的路由中被某人看到。您可以使用 Wireshark 来验证这一点。这就是您应该使用 HTTPS 的原因,这样您从服务器发送/接收的所有内容都将被加密。您坚持使用 HTTP 有什么特别的原因吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多