sql - SQL 存储过程中将用户输入附加到表并防止 sql 注入的正确方法
问题描述
我在 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 子句限制更新。
推荐阅读
- javascript - 使用 JS 将简单文本数据备份到 Google Drive 或 Dropbox 或任何其他免费云服务的最佳方法是什么?
- electron - Electron - ipcRenderer 错误:无法读取未定义的属性“发送”
- python - PyQtChart QLineSeries.replace(QPolygonF) 产生内存泄漏
- python - 你如何编译 ast.Expr?
- java - 带有 JAX-RS 的 PRTG REST API
- spring - 通过 URL grails spring security rest 插件生成用于身份验证的令牌
- c# - “参数无效”错误 Financial.IRR C#
- node.js - 使用 ExpressJS、Nginx 和 PM2 出现 502 Bad Gateway 错误
- javascript - Javascript new Date() Concat 日期和时间在移动浏览器上不起作用
- outliers - 删除异常值 - 对象不能强制输入“double”