投稿されたname
に一重引用符を含めない限り 、引用符から抜け出すことができます。例:名前を次のように投稿します:
' or 1 or '
WHERE句は次のようになります:
WHERE id = '' or 1 or '';
これは、or 1
が原因で、テーブル内のすべての行を照合して取得します。 部。ご覧のとおり、引用符から抜けてSQLを挿入してから、引用符に戻ってクエリを有効にします。
いいえ。ただし、mysqli_multi_query
で実行された場合 そうすれば、最後に複数のクエリを追加できます。
一般的にはそうですが、プリペアドステートメントの方が良いでしょう。エスケープを使用して、WHERE
句は次のようになります(上記の例を使用):
WHERE id = '\' or 1 or \'';
引用符を分割できないため、これは脆弱ではなくなり、name
の場合にのみ行と一致します。 文字通り' or 1 or '
に一致します これは明らかにありそうもないことです。