我正在编写一个应用程序,其主要目的是保留用户列表
购买。
我想确保即使我作为开发人员(或任何拥有完整
访问数据库)不知道多少钱一个
特定的人花了或他买了什么。
我最初想出了以下方案:
--------------+------------+------------
user_hash |项目 |价钱
--------------+------------+------------
a45cd654fe810 |脱衣舞俱乐部 | 400.00
a45cd654fe810 |法拉利 | 1510800.00
54da2241211c2 |啤酒 | 5.00
54da2241211c2 | iPhone | 399.00
user_hash
(可能加盐等)。 如果有足够多的用户,几乎不可能知道有多少
特定用户只知道他的名字就花掉了他的钱。
这是明智的做法,还是我完全愚蠢?
最佳答案
恐怕如果您的应用程序可以将一个人与其数据相关联,那么任何开发人员/管理员都可以。
你唯一能做的就是让链接变得更难,减慢开发人员/管理员的速度,但如果你让用户链接到数据变得更难,那么你的服务器也会变得更难。
基于@no idea 的想法:
您可以使用经典的用户/密码登录到您的应用程序(散列密码或其他),以及一个特殊的“通行证”,用于确保您的数据安全。此“通行证”不会存储在您的数据库中。
当您的客户登录您的应用程序时,我必须提供用户/密码/通行证。用户/密码与数据库一起检查,密码将用于加载/写入数据。
当您需要写入数据时,您可以对您的“用户名/通行证”对进行散列,并将其存储为将您的客户端链接到您的数据的键。
当您需要加载数据时,您可以对“用户名/密码”对进行散列,并加载与此散列匹配的每个数据。
这样就不可能在您的数据和您的用户之间建立联系。
另一方面,(正如我在对@no 的评论中所说)小心碰撞 .另外,如果您的用户写了一个错误的“通行证”,您将无法检查它。
更新:对于最后一部分,我有另一个想法,您可以在数据库中存储“密码/密码”对的哈希值,这样您就可以检查您的“密码”是否正常。
关于hash - 如何将一个人的身份与其个人数据分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3691348/