【问题标题】:Why is it that web developers do not do this with databases?为什么 Web 开发人员不对数据库执行此操作?
【发布时间】:2016-08-23 02:49:40
【问题描述】:

我听说所有这些网站都被 sql 注入和其他东西入侵了。是什么阻止他们使用 32 个字符的字符串加密哈希?如果我是一名黑客并且我设法获取了数据库并且我遇到了加密的哈希值,我将无法对数据库执行任何操作,因为我不知道加密算法和密钥。

只要密钥被安全存储,每个人的帐户都是安全的。

【问题讨论】:

  • 如果您可以安全地存储密钥,请安全地存储数据。
  • 避免阅读如何执行安全密码散列会很有用。使用(可逆)加密,整个系统只与密钥一样安全;适当地使用适当的密码散列使得在合理时间内恢复(强)密码是“不可行的”,无论某些“秘密”密钥如何。话虽如此,没有什么可以排除额外的防御层。并且:如果攻击者找到了一些写访问权限 - 你已经输了。
  • 请参阅安全 Stackexchange 上的 How to securely hash passwords, The Theory。请参阅 OWASP(开放 Web 应用程序安全项目)Password Storage Cheat Sheet。见Modern, Secure, Salted Password Hashing Made Simple

标签: encryption web passwords


【解决方案1】:

您对哈希值进行加密的想法确实会提高用户密码的安全性,但您应该了解您使用此措施究竟解决了什么问题,没有解决什么问题。

首先也是最重要的一点,密码加密通常是不受欢迎的,因为它是一种薄弱的保护措施。如果攻击者拥有密钥,他可以立即发现所有密码。因此,加密并不能让您摆脱使用慢速算法(如 BCrypt、SCrypt、PBKDF2 或 Argon2)正确散列密码的麻烦。

但您的问题是关于加密哈希。在某些情况下,即使是经过适当散列和加盐处理的密码也可以轻松恢复。如果用户选择了一个非常弱的密码,字典攻击无论如何都会很快地显示它们。如果散列被加密,攻击者需要密钥,然后才能开始使用字典。这导致我们出现以下情况:

只要密钥保密,对哈希值进行加密就可以保护弱密码。当攻击者在服务器上没有权限时,总是会出现这种情况,例如 SQL 注入、无视服务器、备份……我试图在关于 safely storing passwords 的教程结尾处描述这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多