create ステートメントの sql インジェクションを防ぐことは理にかなっていますか? どうすればこれを行うことができますか?コマンド パラメーターを使用したかったのですが、うまくいきません。
例:
var createSql = "CREATE TABLE @TableName (@Column1 ...)";
var command = new SqlCommand();
command.CommandText = createSql;
command.Parameters.AddWithValue("@TableName", "XYZ");
command.Parameters.AddWithValue("@Column1", "Col");
// somewhere else
command.Connection = connection;
command.ExecuteNonReader(); // --> exception: invalid syntax at @TableName
編集: Column と TableNames は、他のデータに応じて生成されます。ユーザー入力でも間接的に、はい。指定された作成ステートメントは不完全です。これはほんの一例です。
私の問題は、コマンド パラメーターが置き換えられていないように見えることです。