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 }
语法。
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 }
语法。