sql >> データベース >  >> RDS >> Mysql

MySQLインジェクションクエリ

    投稿された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 'に一致します これは明らかにありそうもないことです。



    1. このOracleDROPCOLUMNが別の列のデフォルト値を変更するのはなぜですか?

    2. 配列と多くの更新がある大きなテーブルでPostgreSQLが遅くなる

    3. UNIXタイムスタンプからタイムゾーン付きタイムスタンプへのOracle変換

    4. TO_CHARを使用したOracleでの数値フォーマット