ホームページ > データベース > mysql チュートリアル > SQL インジェクションを防ぐために ADO.NET コマンドにパラメータを安全に追加するにはどうすればよいですか?

SQL インジェクションを防ぐために ADO.NET コマンドにパラメータを安全に追加するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-01 01:09:09
オリジナル
292 人が閲覧しました

How Can I Safely Add Parameters to ADO.NET Commands to Prevent SQL Injection?

ADO.NET コマンドへのパラメータの追加

データを変更する ADO.NET コマンドを構築する場合、SQL を防ぐためにパラメータを利用することが重要ですインジェクション攻撃を行い、パフォーマンスを向上させます。次のサンプル コードを考えてみましょう。

SqlCommand command = new SqlCommand("INSERT INTO Product_table Values(@Product_Name,@Product_Price,@Product_Profit,@p)", connect);
ログイン後にコピー

このコードは、パラメーターを使用してデータベース テーブルに値を挿入しようとします。ただし、パラメータは正しく定義されていません。

解決策:

正しいアプローチは、次のように、名前、データ型、値を使用して各パラメータを明示的に定義することです。以下:

SqlCommand cmd = new SqlCommand("INSERT INTO Product_table (Product_Name, Product_Price, Product_Profit, p) " +
                              "Values (@Product_Name, @Product_Price, @Product_Profit, @p)", connect);

cmd.Parameters.Add("@Product_Name", SqlDbType.NVarChar, ProductNameSizeHere).Value = txtProductName.Text;
cmd.Parameters.Add("@Product_Price", SqlDbType.Int).Value = txtProductPrice.Text;
cmd.Parameters.Add("@Product_Profit", SqlDbType.Int).Value = txtProductProfit.Text;
cmd.Parameters.Add("@p", SqlDbType.NVarChar, PSizeHere).Value = txtP.Text;

cmd.ExecuteNonQuery();
ログイン後にコピー

追加考慮事項:

  • パフォーマンスの問題が発生する可能性があるため、AddWithValue の使用は避けてください。
  • コード サンプルに示すように、INSERT ステートメントで値の名前を明示的に指定します。 .
  • パラメータのデータ型がデータベース内の対応する列のデータ型と一致することを確認します。テーブル。

以上がSQL インジェクションを防ぐために ADO.NET コマンドにパラメータを安全に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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