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

文字列操作によるPHPSQLインジェクションの防止

    もちろん、mysql_real_escape_string($postID)を使用してインジェクションから保護することができます 、関数を呼び出すたびにクエリを気にしない限り。

    PDOとMySQLiは、単なるインジェクション保護以上のものを提供します。それらは、dbを複数回呼び出すことなくagaisntインジェクションを保護できるプリペアドステートメントを可能にします。これは、全体的なパフォーマンスが向上することを意味します。 30列のユーザーレコードをテーブルに挿入しようとしていると想像してみてください...これは多くのmysql_real_escape_string() 呼び出します。

    プリペアドステートメントは、クエリとともにすべてのデータを一度に送信し、1回のリクエストでサーバー上でデータをエスケープします。 Mysql DBはプリペアドステートメントをサポートしていますが、古いphpmysql_ライブラリはそれらをサポートしていません。

    mysqliまたはできればPDOに移りましょう。振り返ることはありません。



    1. 名前が特定の文字列で始まるすべてのテーブルを削除します

    2. MYSQL NOW()のタイムゾーンを設定します

    3. それぞれのwhere条件にMySql制限を設定したい

    4. CakePHP:ウェブサーバーでサイトが開かない移行の問題はローカルホストで正常に機能します