私は人々がテーブルの数とデータベースの数に任意のselectクエリを行うにはしたいと思いシステムを持っています。内部SELECTクエリを使用して任意のSQLを「サニタイズ」しますか?
私は、すなわちSELECT * FROM ($USER_SELECT_QUERY)
単にサブクエリでそれらを埋め込むことによって、クエリを「サニタイズ」することはできますか?
これは、クエリなど、ユーザーがどのような種類のSELECTクエリを実行できるようになるが、どのINSERT
に構文エラーを生成する、UPDATE
、DELETE
、EXEC
。データを変更/挿入/削除するか、ディレクトリリストなどのホストシステムに関する他の意図しない詳細を明らかにするあらゆる種類のクエリを考え出すことができますか?
仮定:
- ユーザーが接続されているすべてのデータベース内のすべてのデータにアクセスすることができます。
- クエリ時間とリソース使用状況の適切な設定/監視は、(D)DOS攻撃を軽減するための場所です。
- (データベースには、私の場合は、読み取り専用のsqliteファイルがある)
また、私は、ユーザーが任意のSQLを実行することを可能にする一般的な危険性を十分に認識していたので、私は私が「ことを強調したいと思いますのでご注意ください特に、サニタイズクエリにselect-subqueriesを使用する際の制限について尋ねています。
なぜセキュリティレベルとしてデータベースに読み取り専用アクセスをするユーザーを設定していませんか?これは不要な合併症のようです。 –
私の推論は、許容されるステートメントの範囲を制限することでした。 'ATTACH'はsqliteで問題になる可能性があり、' EXPLAIN'や 'VACUUM'などの他の"奇妙な "文は、ユーザに許可されるべきものの範囲外です。 – jkgeyti