これはまったく仮説です。まさにそのアイデアは、私に卑劣な物語を与える。私はむしろすべての事態をカバーするデータベース管理UIを持っています。しかし、私はこれを安全に行うことが可能かどうかについて考える必要があり、すべての結び目で自分を縛ることになりました。したがって、疑問。信頼できるスタッフ用の「安全な」SQL - ブラックリスト、ホワイトリスト、上記のどれですか?
とにかく:私は私のウェブサイトの特定のユーザーが「生」のSQLを入力して、データベースの一部を検索できるように望んでいたとします
- が信頼(およびログインして、明らかに)スタッフのみ
- 読まない専用の関連するテーブル
- へのアクセスに他のテーブル
- への一切のアクセスを安全ではない/不許可にSQLを実行しているのない可能性について、偶発的またはそれ以外
すべての表には、関連する領域の接頭辞が付きます(例:videos_、photos_、forum_)。私は、これらのユーザーに特定のセクションへの読み取りアクセスを許可したいと思いますが、SQLを使って直接変更することはできません。
これらの信頼できるユーザーでも、すべてのフォーラム_テーブルからロックしたいと思うでしょう。そうしないと、すべてのユーザーのプライベートメッセージや管理フォーラムの投稿などを読むことができます。
"信頼できるユーザー"の要件は注意を払っていますが、これを表示または使用するには特定のユーザーグループに属している必要があります。それはもっと「安全なSQL」の部分です。
読取り権限のみを持ち、適切な表のみに異なるDBユーザーで接続するのと同じくらい簡単ですか?
forum_、DROP、ALTER、UPDATE、CREATE、INSERTなどをブラックリストに登録して、拒否しますか?
またはホワイトリストSELECT、FROM、WHERE、関連するテーブル名とフィールド名? field_name = "ここでの任意のテキスト"の必要性について考えるまで、それはより安全に思えます。
またはいくつかの組み合わせですか? (たとえ去勢されていることが分かっていても、「ブラックリストに登録された」SQLの使用をログに記録してください。)
あなたはそれにどのように対処しますか?実際にこれを安全に行うことは可能ですか?
これは意味があります。私はそのようなことが利用できない環境を想定していました。私の同僚の一人はphpMyAdminで厄介な経験をしていて、私たちのものの近くのどこにでも置いてほしくないと知っています。彼らが私がより良い仕事をするのをなぜ信じるのか分かりません... –