ホームページ > データベース > mysql チュートリアル > MySQL で SQL インジェクションを防ぐために「Add()」よりも「AddWithValue()」が推奨されるのはなぜですか?

MySQL で SQL インジェクションを防ぐために「Add()」よりも「AddWithValue()」が推奨されるのはなぜですか?

Barbara Streisand
リリース: 2024-12-04 06:53:11
オリジナル
263 人が閲覧しました

Why is `AddWithValue()` Preferred Over `Add()` for Preventing SQL Injection in MySQL?

Command.Parameters.Add() は非推奨です: MySQL クエリ インジェクションでの AddWithValue() の使用

Command.Parameters.Add の使用法MySQL クエリの () は、セキュリティ上の理由から非推奨になりました。クエリ インジェクションの安全性を確保するには、代わりに AddWithValue() メソッドを使用することをお勧めします。

AddWithValue() を使用するようにコードを更新する方法は次のとおりです。

string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)";
command.CommandText = SQL;
command.Parameters.AddWithValue("@mcUserName", mcUserNameNew);
command.Parameters.AddWithValue("@mcUserPass", mcUserPassNew);
command.Parameters.AddWithValue("@twUserName", twUserNameNew);
command.Parameters.AddWithValue("@twUserPass", twUserPassNew);
ログイン後にコピー

AddWithValue() を使用するを使用すると、クエリに特殊文字や悪意のある SQL コマンドが含まれるリスクがなくなり、SQL インジェクション攻撃を防ぐことができます。

元の SQL クエリ。一重引用符で囲まれたプレースホルダーもセキュリティ上の脆弱性でした。 MySQL の SQL クエリの正しい形式は、フィールド名とテーブル名に一重引用符の代わりにバックティック (`) を使用することです。したがって、更新された SQL クエリは次のようになります:

string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)";
ログイン後にコピー

以上がMySQL で SQL インジェクションを防ぐために「Add()」よりも「AddWithValue()」が推奨されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート