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

動的SQLでのSQLインジェクションの防止

    ああ、それは素晴らしいことです!
    ついに、私は何を理解することができました。 この仲間は彼の「動的SQL」の下で意味しますか?完全に偽装されており、一見すると通常のSQLのように見えるので不思議ではありません!

    答えは次のとおりです:

    やらないでください。これまで。

    「動的」SQLの考え方は本質的に間違っています。誰もこのようにしません。

    あなたの特定のタスクはわかりませんが、あなたの解決策は明らかに間違っています。 そして、それを行うための正しい方法は確かにあります。次の簡単なルールに従ってください:

    • meta_tableを削除する
    • データベースに保存されているSQLクエリを削除する
    • アプリケーション内のすべてのクエリを2つのソースからのみ書き込む(またはビルドする):
      • コードで事前に記述されたハードコードされたSQL
      • すべての可変部分のプリペアドステートメント

    すべてのSQLを完全に安全にします




    1. エラー1005(HY000):テーブルを作成できません(errno:150)

    2. トラブルシューティング`phpapp / console doctrine:schema:create`を実行しているときにそのようなファイルやディレクトリはありません

    3. アレイをデータベースに挿入できません

    4. SQL IF SELECTクエリがnullの場合、別のクエリを実行します