You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何SQL Server的getExtraNameCharacters()未包含[].字符?

SQL Server JDBC驱动getExtraNameCharacters()不包含[]和.的原因
  • 方法设计定位问题:getExtraNameCharacters()的作用是返回可直接作为标识符(表名、列名等)一部分的额外合法字符,而非SQL语法里的分隔、引用类符号。
  • []是标识符引用符号,不属于标识符内容:在SQL Server中,[]是用来包裹包含特殊字符的标识符的语法标记——比如当表名里有空格或特殊符号时,才用[]把它括起来。[dbo].[myTable]里的实际标识符是dbo和myTable,[]本身不是标识符的组成部分,所以不会被该方法返回。
  • .是对象层级分隔符,属于SQL语法符号:.用来区分数据库、架构、表/列的层级关系,是SQL语法的一部分,不属于标识符本身的字符,自然也不在该方法的返回范围内。

另外需要提醒:直接把[].加入校验允许列表存在风险,正确的做法应该是先解析掉标识符的引用符号(比如去掉[])和层级分隔符,再对拆分后的实际标识符部分用getExtraNameCharacters()做校验,这样既符合SQL语法规范,也能避免不必要的注入风险。

内容的提问来源于stack exchange,提问作者Mikhail T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:52:02