mysql_* から PDO に移行するときにユーザー入力をエスケープする方法は?

Susan Sarandon
リリース: 2024-10-26 12:51:03
オリジナル
494 人が閲覧しました

 How to Escape User Input When Migrating from mysql_* to PDO?

mysql_real_escape_string と同等の PDO

質問:

mysql_* から PDO に移行する場合、mysql_real_escape_string と同等のものは何ですか? mysql_real_escape_string 関数?

答え:

mysql_real_escape_string とは異なり、PDO は準備されたステートメントを使用して自動エスケープを実行します。プリペアド ステートメントは、SQL クエリにユーザー入力を直接挿入する代わりに、プレースホルダ (例: ?) を使用して、SQL インジェクションの脆弱性を防ぎます。

例:

<code class="php">try {
    $db = new PDO(...);
} catch (PDOException $e) {
    echo "Error connecting to mysql: " . $e->getMessage();
}

if (isset($_POST['color'])) {
    $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?");
    $stmt->execute([$_POST['color']]);

    $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    var_dump($cars);
}</code>
ログイン後にコピー

この例では、$_POST['color'] はプリペアド ステートメントのパラメーターとして渡され、クエリをインジェクションから保護します。

追加の注意事項:

  • 常に含めますセキュリティのため、PDO 接続 DSN の charset=utf8 を使用します。
  • データベース エラーを適切に処理するために、例外に対する PDO エラー モード (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) を有効にします。
  • 注意してください古い MySQL バージョン (MySQL
  • PDO および SQL インジェクションの防止の詳細については、以下のリソースを参照してください。

詳細情報:

  • MySQL 開発者のための PDO チュートリアル

以上がmysql_* から PDO に移行するときにユーザー入力をエスケープする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!