sql中的#是啥意思?

Posted

技术标签:

【中文标题】sql中的#是啥意思?【英文标题】:What does # mean in sql?sql中的#是什么意思? 【发布时间】:2011-05-17 02:03:40 【问题描述】:

有人知道OR 1# 之类的东西在 mysql 注入的上下文中是什么意思吗?

【问题讨论】:

# 符号有几个英文名称(数字、八角形、十六进制、哈希、尖角),您可以用 Google 搜索 :) :) 感谢您帮助我找到完全不相关的页面!说真的,我在谷歌上搜索了 mysql 英镑符号等,然后才询问并获得了有关英镑的页面 具有讽刺意味的是,如果您搜索mysql hash symbol,这现在是最上面的结果,而mysql octothorpe 则是第二个结果。 sharp sql 的最佳结果,但仍然找不到答案:/ 编辑:我在第三页找到了答案:***.com/questions/3166117/… 【参考方案1】:

它是 MySQL 版本的行注释分隔符。在标准 SQL 中,行注释分隔符是--

-- This is a standard SQL comment.
# This is a MySQL comment.

所以在 SQL 注入的上下文中,如果攻击者知道你正在使用 MySQL,他可能会使用它来突然终止恶意 SQL 语句,导致 MySQL 忽略 # 后面的任何内容并只执行出现的内容在它之前。但是,这仅对单行 SQL 语句有效。这是一个例子:

输入:

用户名:fake' OR 1# 密码:pass

结果 SQL:

SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass'

按此执行,返回每一行

SELECT * FROM users WHERE username = 'fake' OR 1

【讨论】:

【参考方案2】:

这是评论的开始。这意味着解析器将跳过之后的任何内容。

【讨论】:

@JD:啊哈,为了防止 sql 注入,我们需要在查询中添加更多行(讽刺);-)

以上是关于sql中的#是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

sql查询中的“%()s”是啥意思?

SQL 函数中的两个 return 语句是啥意思?

这个 sql where 子句中的“&”是啥意思?

sql中的select是啥意思

SQL语句中的declare 是啥意思,具体怎么用啊

T-Sql 中的时间戳在 C# 中是啥意思?