防止SQL注入

本文关键字:注入 SQL 防止 | 更新日期: 2023-09-27 18:01:33

是否有办法通过使用存储过程来防止sql注入?

我有一个sql查询

select column name from table where field ='@value'
cmd.parameters.add('@value', value);

我使用最少权限的参数化查询。我如何写一个基本的存储过程,以防止sql注入。这可能吗?

防止SQL注入

从字段=@value的表中选择列名之前<>之前cmd.parameters。添加(@ value,价值);之前

SQL参数避免SQL注入问题。

您只需要用parameter更改=条件。查看以上查询

据我所知,单独使用参数化查询应该已经可以防止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);