我在SQL中有一个表,其中包含一个varchar(max)
字段,该字段基本上是由最终用户使用自由格式条目(从网页(更新的日志。
如何防止 SQL 注入? 或者也许已经是了?
create proc stored_procedure
@input varchar(max)
as
update mytable
set logfield = logfield + ' ' + @input;
看起来可能没问题(SQL Server 2012(。但是我能读到的所有内容都坚持认为,即使在参数化存储过程中,也不应该连接用户输入。
是否有其他方法可以附加用户输入?
SQL注入只会发生在动态SQL上(无论是在SQL Server端还是在应用程序端(。您的代码不容易受到 SQL 注入的影响。但是,您正在更新表中的所有行。应使用 WHERE 子句限制更新。