3
我对MS SQL没有太多经验,所以如果这是一个非常愚蠢的问题,我很抱歉 - 但我无法在Intenet上获得任何有关它的真实信息。将SQL登录作为参数传递
所以,我只是想创建一个SQL登录名和SQL用户为登录名和它去像:
SqlCommand CreateDatabaseUser = new SqlCommand("CREATE LOGIN @NewUserLogin " +
"WITH PASSWORD = '@NewUserPassword' " +
"CREATE USER @NewUserLogin FOR LOGIN @NewUserLogin", AddUserConnection);
CreateDatabaseUser.Parameters.AddWithValue("@NewUserLogin", NewUserLoginTextbox.Text);
CreateDatabaseUser.Parameters.AddWithValue("@NewUserPassword", PasswordTextbox.Text);
AddUserConnection.Open();
CreateDatabaseUser.ExecuteNonQuery();
我得到一个错误说Incorrect syntax near '@NewUserLogin'
,但如果我这样做不正确的,这样的不安全的方式:
"CREATE LOGIN " + NewUserLoginTextbox.Text +
" WITH PASSWORD = '" + PasswordTextbox.Text + "'" +
" CREATE USER " + NewUserLoginTextbox.Text + " FOR LOGIN " + NewUserLoginTextbox.Text
那么它工作!
所以,我想弄清楚我在那里做什么工作。提前致谢!
非常感谢您的快速回复!您能否告诉我,处理DDL语句以确保注射安全的正确方法是什么? – Stutz
@Stutz为了避免SQL注入攻击,您应该在将用户名和密码放入SQL之前对其进行非常严格的验证,或者在白名单中添加一组有效的用户名和密码。 –
再次感谢!你非常乐于助人! :)你,我希望有一些内置的工具来验证它在C#!Welp,猜我必须手动做! – Stutz