0

そこで、SQL インジェクションを回避するために、PHP PDO 関数を使用して MySQL データベースに接続することにしました。ただし、ユーザーが引用符を付けたときに \ をテーブルに置くことを避けることは可能ですか?

これが私のコードです:

$insert = $conn->prepare("INSERT INTO tests 
        (name, author, category, description, num_attempts, audience, date_uploaded, source, public) VALUES 
        (:testName, '$userId', '$category', :desc, '0', '$audience', '$date', 'Web', '0')");
        $insert->bindParam(':testName', $testName, PDO::PARAM_STR);
        $insert->bindParam(':desc', $desc, PDO::PARAM_STR);
        $insert->execute();

testName に注意してください。これはユーザー入力です。誰かが引用符を付けるたびに \ をデータベースに配置したくありません。助けてください。

4

1 に答える 1

5

魔法の引用符がオンになっているようです。これにより、スラッシュが追加されます。マジック クォートは壊れたセキュリティ概念であり、PHP 5.3 で非推奨になったので、将来的に保証されるコードではマジック クォートをオフに設定してください。

于 2013-06-22T21:26:18.083 に答える