ホームページ  >  記事  >  バックエンド開発  >  PDOの自動エスケープに関する問題について

PDOの自動エスケープに関する問題について

WBOY
WBOYオリジナル
2016-06-13 13:10:531364ブラウズ

PDO の自動エスケープの問題について
準備メソッドと実行メソッドを使えば SQL インジェクションなどの攻撃も防ぐことができると本で読みました。すべての変数が自動的にエスケープされるためです

次に、フォームに df'dfdf" と入力しましたが、結果はデー​​タを入力できませんでした。
SQL ステートメント: INSERT INTO cms_manage( admin_user, admin_pass, level, last_time ) VALUES( 'df'dfdf" ', 'da39a3ee5e6b4b0d3255bfef95601890afd80709', '6', NOW() )
エラー メッセージ: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。MySQL サーバーに対応するマニュアルを確認してください。 'dfdf"', 'da39a3ee5e6b4b0d3255bfef95601890afd80709', ' 行 9 付近で使用する正しい構文のバージョン
mysql_real_escape_string 関数を使用してデータ df'dfdf" をエスケープすると、準備と実行は自動的にエスケープされますか?手動で逃げる必要があります。

-----解決策--------------------------------
もちろんです!
しかし、SQL コマンドをポストしただけで、準備メソッドと実行メソッドは使用していません。
------解決策------------------
これはコードに問題があると思います。PDO の prepare()、execute() の組み合わせは、実際に SQL インジェクションを防ぐことができます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。