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