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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-04 06:53:11268ブラウズ

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 サイトの他の関連記事を参照してください。

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