此代碼是否安全的SQL注入?爲什麼?此代碼是否安全的SQL注入? (以及爲什麼)
public void AddPlayer(string username)
{
var query = "INSERT INTO dbo.Player(Username, RegisterDate) VALUES(@Username, @RegisterDate)";
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Username", username);
command.Parameters.AddWithValue("@RegisterDate", DateTime.Now);
command.Connection.Open();
command.ExecuteNonQuery();
}
}
public DateTime GetRegisterDate(string username)
{
var query = "SELECT RegisterDate FROM dbo.Player WHERE Username = @Username";
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Username", username);
command.Connection.Open();
return (DateTime)command.ExecuteScalar();
}
}
編輯:能否注射安全的等效代碼使用存儲過程寫?如果是這樣,存儲過程會是什麼樣子?
+1。構建易受攻擊的存儲過程是可能的,但使用像你所說的參數仍然是安全的。 @asmo:您應該能夠或多或少地將現有代碼複製到存儲過程中。 – Eric
非常感謝你們兩位! – asmo