0

コードにインジェクションを実行するために使用できるすべての MySQL コマンドは何ですか?

UNION と CONCAT を無効にしました。

私は非常に基本的なアプリケーションを使用しているため、複雑なクエリは必要ありません。インジェクションが問題にならないようにするために他に何を無効にできますか?

はい、私が知る限り、すべての変数をサニタイズしました。問題は、それが複数の関係者によるプロジェクトであり、私が作業するために渡されたいくつかのライブラリで、ずさんな作業に気付いたことです。

すべてのポスト変数をサニタイズして元に戻すことを考えていましたが、いくつかのポスト変数の複雑な多次元の性質のために、それは非常に複雑な作業になるでしょう。

4

3 に答える 3

5

インジェクションは、ほぼすべてのタイプの SQL ステートメントで可能です。
インジェクションを回避する唯一の安全な方法は、準備済みステートメントを使用し、データをクエリ パラメーターにバインドすることです。

于 2012-09-21T19:35:45.663 に答える
2

キーワードを単純に無効にすることはできません。次の例を見てください。

SELECT ID FROM user WHERE name='*' AND password = ' whatever' OR password <> ''

SQL ステートメントに追加する前に、ユーザー入力をエスケープする必要があります (例: mysqli_real_escape_string())。さらに良いのは、PDO で準備済みステートメントを使用することです。

于 2012-09-21T19:40:30.253 に答える
0

[…] 注射が問題にならないようにするには?

それはできません。SQL インジェクションが可能である場合、それらは問題です。

于 2012-09-21T19:34:29.450 に答える