SQL Server で ASP.NET (VB.NET) を使用しており、ユーザーが Web フォームからサーバー ログインとデータベース ユーザーを作成できるようにしたいと考えています。
ログインとユーザーを作成するコマンドを実行して、これを機能させました。
Dim cmd As New OleDb.OleDbCommand(
"CREATE LOGIN [" & login & "] FROM WINDOWS WITH DEFAULT_DATABASE = Db; " & _
"CREATE USER " & username & " FOR LOGIN [" & login & "]; ",
connection)
cmd.ExecuteNonQuery()
login
とはusername
、サニタイズして (できる限り) に直接挿入するユーザー入力ですCommandText
。これが機能している間、私はこのようにすべきだとは思わない。
次のように、パラメーター化されたクエリに似たものを望んでいます。
Dim cmd As New OleDb.OleDbCommand(
"CREATE LOGIN [@login] FROM WINDOWS WITH DEFAULT_DATABASE = Db; " & _
"CREATE USER @username FOR LOGIN [@login]; ",
connection)
cmd.Parameters.AddWithValue("@login", login)
cmd.Parameters.AddWithValue("@username", username)
cmd.ExecuteNonQuery()
ただし、podiluskaで言及されているように、パラメーター化された値を許可していないように見えるためCREATE LOGIN
、これは機能しません。CREATE USER
「@username」付近の構文が正しくありません。
ユーザー入力からログインとユーザーを作成するより良い方法はありますか?