注意,这纯粹是假设的;这个想法给了我heebie-jeebies。我宁愿有一个涵盖所有可能性的数据库管理界面。但我不得不考虑是否可以安全地做到这一点,并最终结束自己的所有结。因此,这个问题。可靠员工的“安全”SQL - 黑名单,白名单,以上都不是?
总之:假设我想,让我的网站的某些用户通过输入搜索数据库的一部分“原始” SQL:
- 信任(和登录,很明显)的工作人员只
- 只读访问相关表格
- 根本见不到其他表
- 没有运行不安全/不允许SQL,意外方法可行或以其他方式
所有表格都以其相关的区域为前缀,例如videos_,photos_,forum_。我想授予这些用户读取特定部分的权限,但不允许他们通过输入SQL直接修改数据,即使我相信他们通过UI进行更改。
我想甚至可以锁定这些用户信赖的,比方说,所有forum_表的 - 否则他们可以阅读所有用户的私人信息,管理论坛帖子,等等!
“可信用户”要求的照顾,他们将不得不在一定用户组看到或使用。这更多的是“安全的SQL”部分。
是化繁为简用不同的DB用户谁具有只读权限,只有在正确的表连接?
或将我列入黑名单(并拒绝SQL如果它包含)forum_,DROP,ALTER,UPDATE,CREATE,INSERT,等等?
或白名单SELECT,FROM,WHERE,相关的表名称和字段名称?这听起来更安全,直到我想到需要WHERE field_name =“这里是任意文本”。
还是有些组合? (比如,记录使用“黑名单”的SQL,尽管它已知被阉割。)
或者逃跑尖叫?
你将如何解决它?实际上是否可以安全地做到这一点?
这是有道理的。我假设了一种环境,那种东西不可用;例如,我知道我的一位同事在使用phpMyAdmin时遇到了一个不愉快的经历,并且不希望我们的任何东西靠近我们的东西。不知道为什么他们会相信我做得更好...... – 2010-12-01 20:31:21