Web App密码保护UNIX风格

时间:2013-06-19 00:02:44

标签: mysql password-protection

更多的概念问题,实际上不是问题,但我对这个概念的评论很好奇:

在现代Unix系统上,你有一个shadow passwd,存储所有用户的所有密码。该文件只能通过某些特权读取,而不能由“普通”用户读取,因此甚至可以防止加密密码被泄露。

对于Web应用程序,我看到的所有概念都只在一个表中存储用户ID和密码,如

|uid|name|surname|address|....|passwdhash|...|

按照上面的想法,我做到了:

Table users
  |uid|name|surname|address|....|....|...|

Table passwords
  |rowid|keyhash|passwdhash|... other| critical| stuff| ....

两个表之间没有SQL关系(也就是外键约束等)。表完全不相交!

因此,找到用户的密码遵循此算法:

SELECT ... from users

compile keyhash from user data

log in to DB as privileged user
   SELECT passwdhash from passwords where keyhash = <compiled value>
logoff from DB

显然,表passwdhash只有特定用户才能选择/读取/更新。

目前的优势:

即使某人可能通过应用程序访问数据库,仍然很难获得用户密码(甚至其他相关信息)。当然不包括蛮力或彩虹,它只会阻止使用用户ID和密码哈希窃取整个数据库列表。即使有人闯入应用程序,他仍然无法像上面的Unix系统那样读出密码表

问:

  1. 有没有人听说过像这样的概念?
  2. 有没有人实现过这样的事情和
  3. 运行时环境中的经验
  4. 感谢您在3微秒后没有将其置于话题之外......; - )

0 个答案:

没有答案