sql注入方法有几个版本,但我不知道为什么会有细微的差别。我怎么知道环境之间的区别?
12272 次
2 回答
4
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 */语法,因为它允许多行注释,并且许多其他编程语言都支持它。
我检查过的所有 SQL 品牌都支持或-- comment:/* comment */
该# comment语法仅受 MySQL 支持。
{ comment }只有 Informix 支持该语法。
于 2018-09-02T14:30:36.290 回答
1
于 2018-09-02T07:31:09.193 回答