注意,這純粹是假設的;這個想法給了我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