必须用sp_executesql代替EXEC实现参数化查询,严格声明参数类型与长度,对表名列名等动态部分采用白名单校验,并对输入参数做强类型声明和范围检查。存储过程中用 sp_executesql 代替 EXEC 才安全直接拼接字符串再执行,哪怕在存储过程里,照样被注入。SQL Server 的 EXEC 会把整个字符串当命令解析,参数没隔离——@sql = 'SELECT * FROM users WHERE id = ' + @id 这种写法,传入 @id = '1; DROP TABLE users; --' 就完蛋。必须改用 sp_executesql,它支持真正的参数化查询,SQL 引擎会在编译阶段就区分代码和数据:DECLARE @sql NVARCHAR(MAX) = N'SELECT * FROM users WHERE status = @status AND created_after = @since';EXEC sp_executesql @sql, N'@status TINYINT, @since DATETIME', @status = 1, @since = '2024-01-01';sp_executesql 的第二个参数是参数定义字符串,必须显式声明类型和长度(比如 NVARCHAR(50),不能只写 NVARCHAR)第三个及之后的参数才是实际值,顺序和定义严格对应别图省事把变量名和参数名搞混:定义里写 @status,调用时也得传 @status = ...,不是传变量值本身如果动态部分涉及表名或列名(无法参数化),必须走白名单校验,不能靠 REPLACE 或正则过滤所有用户输入进存储过程前,先做类型强转和范围检查即使用了 sp_executesql,如果参数本身是弱类型或未校验,攻击者仍可能绕过。比如把 @id 设为 INT 类型,但调用时传入 '1 OR 1=1',SQL Server 会隐式转成 1——看似安全,实则掩盖了上游传参不规范的问题。存储过程参数声明必须用具体、窄的类型:@user_id INT,而不是 @user_id SQL_VARIANT 或宽泛的 NVARCHAR(MAX)对数字类参数,加 IF @user_id < 1 OR @user_id > 999999 RETURN 这类硬约束对字符串类参数(如用户名),用 LEN(@name) > 0 AND LEN(@name) <= 50 AND @name NOT LIKE '%[^a-zA-Z0-9_]%' 控制内容范围避免在存储过程里做 CAST 或 CONVERT 转换用户输入——转换失败会报错,但成功转换后可能已失真禁止在存储过程中拼接对象名(表名、列名、排序字段)表名、列名、ORDER BY 字段这些语法成分,SQL Server 不允许用参数占位,硬拼就是高危操作。见过太多人写 SET @sql = 'SELECT * FROM ' + @table_name,再加一层 QUOTENAME(@table_name) 就以为万事大吉——但 QUOTENAME 只防单引号,防不了 ]; DROP TABLE x; -- 这种结尾注入。 唱鸭 音乐创作全流程的AI自动作曲工具,集 AI 辅助作词、AI 自动作曲、编曲、混音于一体
如何防止SQL注入利用存储过程_确保存储过程不拼字符串
张小明
前端开发工程师
程序员的未来在何方?腾讯自爆程序员90%的代码都由AI完成!
不知道大家最近有没有看一个新闻,程序员90%的工作都可以由AI完成,那么程序员未来在哪里呢?今天这篇文章不塑造焦虑,讲讲我个人的故事。去年6月份,我做了一个连自己都觉得疯狂的决定:裸辞,All in…
科捷智能:锂电材料行业智能工厂物流构建实践
锂电材料行业的智能工厂物流构建,本质上是一场与金属污染、信息断裂和安全风险的系统性博弈。市场上不乏提供单一设备或局部方案的供应商,但能够将洁净控制、数据贯通与安全合规整合为一体化交付能力的厂商依然稀缺。科捷智能在锂电材料行业的持续深耕&a…
数据库性能优化实战
系列导读:本篇将深入讲解数据库性能优化的核心方法与实战技巧。 文章目录一、SQL 优化1.1 慢查询分析1.2 EXPLAIN 解读1.3 优化原则二、索引优化2.1 索引类型2.2 索引设计原则2.3 组合索引示例三、架构优化3.1 读写分离3.2 分库分表3.3 缓存策略四、连接池优化4.1 H…
RISC-V Debug实战解析(一):基于JTAG协议的调试模块Verilog设计
1. 从零理解RISC-V调试系统架构 第一次接触RISC-V调试系统时,我被文档里那些缩写词搞得头晕眼花——DTM、DMI、DM这些概念就像天书一样。直到亲手用Verilog实现了一个JTAG调试模块,才真正搞明白它们之间的关系。想象你正在用电脑调试一块RISC-V开发板&am…
DeepSeek总结的我们所熟知的互联网即将终结
我们所熟知的互联网即将终结 2026-04-15 | 1201词 上周,Anthropic 公司宣布,其最新的人工智能模型 Claude Mythos 预览版将不会向公众发布,此前该公司获悉,该模型能够发现并利用那些在关键软件系统中潜藏了数十年未被察觉的漏洞…
生成式AI应用实时通信方案全栈拆解,从Token流调度、WebSocket心跳优化到边缘推理协同
第一章:生成式AI应用实时通信方案全栈概览 2026奇点智能技术大会(https://ml-summit.org) 生成式AI应用对低延迟、高并发、上下文感知的实时通信能力提出了全新要求。传统REST API轮询或短连接模式已难以支撑流式响应、多模态协同与会话状态持续同步等核心场景&…