如何创建参数化SQL查询?我为什么要?
我听说“每个人”都在使用参数化SQL查询来防止SQL注入攻击,而不必为每一条用户输入进行操作。
你怎么做到这一点?使用存储过程时是否自动获得此信息?
所以我理解这是非参数化的:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
这会参数化吗?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
或者我是否需要做更广泛的事情以保护自己免受SQL注入?
With command .Parameters.Count = 1 .Parameters.Item(0).ParameterName = "@baz" .Parameters.Item(0).Value = fuzEnd With
除安全考虑因素外,使用参数化查询还有其他优点吗?
更新:这篇伟大的文章与Grotok引用的一个问题相关联。http://www.sommarskog.se/dynamic_sql.html
万千封印
相关分类