- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个网站,用户将在其中存储敏感数据。有权访问数据库的人应该无法查看此数据,但我不能使用哈希函数,因为用户需要查看他们存储的数据。我该怎么办?
最佳答案
TL;DR:加密数据库的列不会有太大帮助。
最佳做法:在花费时间和金钱保护系统之前找出威胁模型。如果您在对威胁模型没有清晰认识的情况下构建复杂的安全措施,您就会自欺欺人地产生一种错误的安全感。
而且,对 DBMS 中的列进行加密是一项复杂的安全措施。
您的威胁模型是什么?你会受到什么攻击?通过谁?攻击将如何伤害您?
最有可能的外部攻击来自网络犯罪分子闯入您的网络服务器以窃取您的用户信息以实现身份盗用 (Equifax)、勒索 (Ashley Madison) 或 spy 事件(美国政府人力资源数据库)。
如果您对 DBMS 中的某些列进行加密,并且您的 Web 用户需要能够查看和更新这些列,则您的 Web 服务器将必须知道加密和解密 key 。如果犯罪分子盗用了您的 Web 服务器,他将获得您的 key 。因此,他将有权访问您的 dbms 的加密列。而且,他会有一个大路标,上面写着看!这是 secret !
当然,还有很多其他可以想象到的外来者攻击。有人可能会突破您的防火墙并直接攻击您的数据库。有人可以进入缓存并获取缓存的敏感数据。有人可能会猜出您的 Web 应用程序的管理员密码。或者,窃取批量上传文件。
您提议的设计设想了一次内部攻击。必须防止已经拥有 DBMS 访问凭据的人看到某些表中的某些列。他们将如何处理这些信息?你没说。有什么威胁?
除了加密之外,您还可以采取这些措施来防止内部人员侵犯用户的 secret 性。
credit_card
表。”如果您在美国处理医疗保健数据,那么您已经有了 HIPAA 指南。让您的内部人员理解并同意您的指导方针。建立有助于执行政策的机制。向每个内部人员发出他或她自己的用户名/密码对以访问 DBMS。在表和列级别使用选择性 GRANT 操作来允许和禁止查看数据。例如,
GRANT SELECT (name, address) ON person TO username@'%';
让 username
查看 name
和 address
列,但看不到 中的
表。读这个。 https://dev.mysql.com/doc/refman/5.7/en/grant.html#grant-column-privileges taxpayer_id
列人
将您的时间和金钱花在保护您的 DBMS 机器的优质防火墙上。研究OWASP并遵循这些做法。花时间和金钱对您的 Web 应用程序进行渗透测试并解决问题。将它们用于审查和培训内部人员。这些东西比想象中的加密列魔法子弹更有效地减慢攻击者的速度。
关于两个家伙和熊的老笑话。
Bear: Roar.
Adam: Uh oh, I don't know if we can run faster than this bear.
Bill: I just have to run faster than you.
这是处理小型网站安全性的好方法。让它足够难以破解,坏人会攻击其他人。
如果您正在运行一个包含大量敏感记录的大型网站(我正在看着您,Equifax),这还不够好。
关于mysql - 在数据库中存储加密数据的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46388762/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!