sql注射。 “'OR 1=1 #" and " ' OR 1=1 --”有什么区别?

sql injection. What is the difference between " 'OR 1=1 #" and " ' OR 1=1 -- "?

sql注入方式有好几个版本,不知道为什么会有细微的差别。 我怎么知道环境之间的差异?

只是数据库引擎之间的语法不同 “ OR 1=1 #” 它适用于 mysql 数据库,因为那里的评论使用 # “ OR 1=1 — ” 与 sql 服务器 BD 一起工作因为使用 -- 在那里评论更多有关 sql 注射方法样本的详细信息,请检查此 link

TL;DR — # 表格只能在 MySQL 上使用。 -- 表格可用于任何品牌的 SQL.

#--都是用来引入注释的。 SQL 注入攻击中两者的目的是确保忽略该行的其余部分。

SELECT * FROM MyTable WHERE name = '$unsafe_variable' AND id = 12345

SQL 注入攻击可能会干扰 $unsafe_variable,但查询仍将限于具有特定 id 的一行。但是,如果 SQL 注入攻击可以有效地抵消第二项呢?

SELECT * FROM MyTable WHERE name = '' OR 1=1 -- ' AND id = 12345
                                    ^^^^^^^^^^^^

-- 之后的任何内容都是注释,因此查询将忽略它。评论包含看起来更像 SQL 语法的内容并不重要。

-- 是标准 ANSI SQL 指定的唯一注释语法,所有 SQL 实现都应支持此语法。

但大多数 SQL 实现支持其他注释语法,因为开发人员更熟悉使用它。值得注意的是 /* comment */ 语法,因为它允许多行注释,并且许多其他编程语言都支持它。

-- comment/* comment */ 都受到我检查过的所有 SQL 个品牌的支持:

只有 MySQL 支持 # comment 语法。

只有 Informix 支持 { comment } 语法。