このコードは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();
}
}
EDIT:ストアドプロシージャを使用して射出セーフ同等のコードをを書かれていませんか?もしそうなら、ストアドプロシージャはどんなものでしょうか?
+1。脆弱なストアドプロシージャを構築することは可能ですが、まだ安全だと言ったようなパラメータを使用することは可能です。@asmo:既存のコードをストアドプロシージャに多かれ少なかれコピーできるはずです。 – Eric
皆さん、ありがとうございました! – asmo