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

PHPでMySQLクエリを除外する

    唯一の方法は、ユーザーが送信したデータを適切にエスケープすることです。他の人はそうするいくつかの方法を指摘しました。

    別の方法があります:準備されたステートメント およびプレースホルダー。プリペアドステートメントは、すべての modern でサポートされています mysqli を含むPHPデータベースインターフェース および PDO 。

    PDOをデモンストレーションとして使用してみましょう。テーブルfooのデータを少し更新したいとします。 ユーザーによって送信されました。

    $sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
    $sh = $db->prepare($sql);
    $sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));
    

    executeに渡される配列内の変数 クエリ内の疑問符のプレースホルダーを置き換えます。これが発生すると、自動的にエスケープされて引用されます 。データベースに安全に配置するために、手動でエスケープする必要はありません!

    一方、HTML、Javascript、数字が必要な文字など、予期しないコンテンツをフィルタリングする必要があります。データベースにデータを安全に挿入できるようにすることは、戦いの半分だけ



    1. 月別のLaravelカーボングループ

    2. PHPPDOすべてのクエリにフィルターを追加

    3. Geekbench3を使用したデータベースサーバーのパフォーマンスの評価

    4. PHP / mysqlは、UPDATEステートメントの影響を受ける行の数を取得します