代码之家  ›  专栏  ›  技术社区  ›  Jonathan.

数据库安全

  •  1
  • Jonathan.  · 技术社区  · 14 年前

    如果攻击者窃取了数据库,为什么他需要密码,因为身份验证是在php中完成的? 攻击者可以尝试通过获取数据库来获取有权访问受保护区域的版主或用户的密码(例如,攻击者可能是托管数据库的公司的员工),然后转到论坛并以用户身份登录。

    基本上,如果攻击者可以访问数据库,那么当您可以访问数据而不需要进行身份验证时,为什么还要使用用户名和密码呢。

    (这篇博文让我问了一个问题: http://www.richardlord.net/blog/php-password-security

    2 回复  |  直到 14 年前
        1
  •  2
  •   ircmaxell    14 年前

    您有义务尽可能保护您的用户的密码。这意味着保护数据库不被窃取。这也意味着要做一个强的salted散列,这样如果攻击者真的得到了数据库,那么提取所有密码将花费令人望而却步的长时间(这总是有可能的,但却不值得他们这么做)。

    一种方法是使用多盐散列系统。基本上你用两种不同的盐。一个存储在每个用户的唯一用户中,另一个存储在其他位置的整个站点中。那样的话,如果两种盐都得不到的话,破解的难度就会成倍增加(尽管也不是不可能)。

        2
  •  0
  •   nvogel    14 年前

    这取决于他一旦获得登录名和密码还能做什么。例如,所讨论的网站可能允许他以另一个用户的名义订购商品,或者以其他方式模仿该用户。换句话说,获取登录凭据允许入侵者将被动攻击(读取数据)转化为主动攻击(执行不允许的操作)。

    由于这些原因,密码不应该以可读的形式存储在数据库中。应始终使用加密安全的哈希算法对密码进行哈希(而不是加密)。