如果这似乎是一个愚蠢的问题,请道歉但是如何使用参数防止SQL注入以及与T-SQL相关的最佳实践:
例如:这是最佳做法吗?
SqlCommand SqlCmd = new SqlCommand("SQL Command @X ....... @Y");
SqlCmd.CommandType = CommandType.Text;
SqlCmd.Parameters.AddWithValue("@X", SqlDbType.VarChar).Value = X;
SqlCmd.Parameters.AddWithValue("@Y", SqlDbType.date).Value = Y;
SqlCmd.Connection = ConnectionString;
答案 0 :(得分:2)
是的,这段代码可以安全地从SQL注入。
原因是当使用参数时,您将项目作为值传递给服务器,它们将被解释为。
如果要构造一个字符串,SQL无法知道该值是什么以及查询是什么,并且必须完全依赖于语法。
答案 1 :(得分:1)
最佳做法是使用SQL参数。使用SqlParameterCollection(如示例中所示:SqlCmd.Parameters
)会自动为您提供:
There are some additional best practices,包括:
您可以在OWASP SQL Injection Prevention Cheat Sheet找到进一步描述的最佳做法。