1

MySQL クエリを投稿するフォームがあります。PHPでさらに処理されます。私の問題は、ユーザーが「DROP DATABASE mydb」と入力すると、大きな問題になることです。したがって、ユーザーが他のデータベースに害を与えないように、クエリを投稿する前に検証できる方法があるかどうかを知りたいです。確かに正規表現を使用できます。しかし、それを行う他の良い方法はありますか?

ありがとうございました

4

2 に答える 2

3

これは非常に複雑になる可能性があるため、php(または正規表現...またはデータベース自体以外のもの)でクエリを解析しないでください。 ²)。
これらのユーザー生成クエリに対してデータベースユーザーを作成し、ユーザーが実行できる必要があることに対してのみ特権を付与することをお勧めします(おそらく、SELECTs、UPDATEs、DELETEs、またはテーブル構造の変更のみ)。

²例:SELECT 'DROP DATABASE is a bad thing' FROM mytable;まったく問題なく、何も害はありません。クエリで「DROP DATABASE」を探すだけでは、この場合、ユーザーを困らせるだけです...

于 2013-06-11T10:34:46.377 に答える