防止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);