防止sql注入
有没有办法通过使用存储过程来阻止SQL注入?
我有一个SQL查询
select column name from table where field ='@value' cmd.parameters.add('@value', value);
我正在使用具有最少权限的参数化查询。 我如何编写一个基本的存储过程来防止SQL注入。 那可能吗?
从表中选择列名称,其中field = @value
cmd.parameters.add('@ value',value);
SQL参数避免了sql注入问题。
您只需要使用参数更改= condition。 检查以上查询。
据我所知,单独使用参数化查询应该已经阻止了sql注入攻击。
如果使用参数化查询,则不应该在@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
C#
cmd.parameters.Add("?value", value);
已弃用
更新@Yogesh Bhadauirya说,
cmd.Parameters.AddWithValue("?value", value);