有没有办法通过使用存储过程来防止sql注入?
我有一个sql查询,如
select column name from table where field ='@value'
cmd.parameters.add('@value', value);我使用的是权限最小的参数化查询。如何编写基本的存储过程来防止sql注入。这有可能吗?
发布于 2011-07-07 22:35:38
据我所知,仅使用参数化查询就可以防止sql注入攻击。
发布于 2011-07-07 22:37:00
如果你使用参数化查询,你不应该需要@value (@value而不是'@value')两边的引号,只要@value参数被定义为一个字符串。
创建存储过程的工作方式与此类似。@value将被定义为VARCHAR或其他类型,因此只接受字符串。然后在存储过程中引用@value而不是'@value'。
CREATE PROCEDURE my_proc (IN @value VARCHAR(32))
BEGIN
SELECT column name FROM table WHERE field = @value
END发布于 2012-11-07 03:17:36
C#
cmd.parameters.Add("?value", value);已被弃用
为了更新@Yogesh Bhadauirya,
cmd.Parameters.AddWithValue("?value", value);https://stackoverflow.com/questions/6612306
复制相似问题