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中的#是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章