防止SQL注入
本文关键字:注入 SQL 防止 | 更新日期: 2023-09-27 18:01:33
是否有办法通过使用存储过程来防止sql注入?
我有一个sql查询
select column name from table where field ='@value'
cmd.parameters.add('@value', value);
我使用最少权限的参数化查询。我如何写一个基本的存储过程,以防止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);