对于所有数据库/网络专家,你好了另一个新手问题....
我已经阅读了很多关于使用哈希,盐,加密算法等保护存储在数据库中的密码的信息。 为避免混淆,我说有两种不同的密码......'数据库用户名/密码'和'应用程序用户名/密码'其中会有很多。
我认为这是正确的...但由于我的应用程序可能会有很多用户,我不会创建一个 每个人的新数据库用户,而不是他们都可以使用相同的数据库uername /密码来访问数据库本身。选项将是非常严格的。 应用程序帐户设置(用户名和密码)将在数据库的表中加密。
我想知道的是,我是否/如何使用密码来阻止用户阅读数据库中的任何条目。
最好用一个例子来解释:
假设我有一个拥有20个用户的系统。 我将为每个用户分配一个(应用程序)用户名和密码。
每个人都会远程从PC应用程序生成一些数据,然后将其上传到数据库。 表格中的每一行都有一个用户'的参考/列。谁上传了它(以便以后检索)。
假设某人出现(试图破解系统)而不是使用他们自己的用户名开始使用不同的用户甚至执行 其他sql命令读取其他表项。
如何编写应用程序(哪个平台)以确保访问数据库的用户只能访问自己的数据。
我确信开发人员已经多次这样做了,但是如果有人能指出我正确的方向来做一些示例代码或教程 非常感激。
Ta Muchly !!!
答案 0 :(得分:0)
使用密码的MD5哈希值 - 永远不要存储原始密码。您还可以添加用户名以混淆字典攻击。然后通过任何数据中的user_id字段将数据与用户相关联。保罗......
答案 1 :(得分:0)
相反,您的应用程序让用户选择关键字/密码:
然后在您的数据库中,您的应用程序会存储该用户的特定内容:
当用户想要对您的系统进行身份验证时,您:
在对用户进行身份验证之后,您需要在某个权限表中查找该用户并确定允许他们执行的操作,或者将其应用程序级用户名用作应用程序执行的每个查询的参数确保他们只检索自己的数据。
请阅读How to securely hash passwords?,其中Thomas Porrin的答案目前最常被提及Stackexchange密码散列论文,当然是迄今为止我见过的最好的。