ホームページ > データベース > mysql チュートリアル > クリーンで安全なコードを実現するために、.NET/SQL でテーブル名をパラメータ化できますか?

クリーンで安全なコードを実現するために、.NET/SQL でテーブル名をパラメータ化できますか?

Patricia Arquette
リリース: 2024-12-30 08:59:18
オリジナル
865 人が閲覧しました

Can Table Names Be Parameterized in .NET/SQL for Clean and Secure Code?

SQL でのテーブル名のパラメータ化?

質問:

テーブルを渡すことは可能ですか? .NET/SQLのパラメータとして名前を使用しますか?最終的な目標は、セキュリティを損なうことなくクリーンさを強化し、乱雑なコードを回避することです。

回答:

テーブル名の直接パラメータ化はサポートされていません。ただし、sp_ExecuteSQL:

SqlConnection conn = new SqlConnection("Your database connection string");
DataTable dt = new DataTable();

using (SqlCommand cmd = conn.CreateCommand())
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "sp_ExecuteSQL";

    cmd.Parameters.AddWithValue("@stmt","SELECT * FROM table");

    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
    {
        da.Fill(dt);
    }
}
ログイン後にコピー

を使用してこれを間接的に実現できます。あるいは、C# で (パラメータ化された) SQL ステートメントを構築し、テーブル名を追加してコマンドとして実行することもできます:

var name = ...; //Determine table name dynamically here
var sql = $"SELECT * FROM {"table"}";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
    cmd.Parameters.Add("", ...);
    var result = cmd.ExecuteReader();
    ...
}
ログイン後にコピー

潜在的なセキュリティ脆弱性を防ぐために、必ずテーブル名をホワイトリストに登録してください。

以上がクリーンで安全なコードを実現するために、.NET/SQL でテーブル名をパラメータ化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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