-
Notifications
You must be signed in to change notification settings - Fork 8.6k
WallFilter 拦截规则
JKTerrific edited this page Jun 5, 2018
·
3 revisions
在这里记录一些WallFilter拦截的规则
注释存在的SQL是危险的,但是有些位置的注释常用,并不会造成危害。
/* A */ SELECT /* B */ ... /* C */ ... FROM ... /* D */ WHERE /* E */
其中A是头部注释,B是第一个Token之后的注释。A和B不会产生SQL注入的。E是WHERE条件后的注释,最容易产生SQL注入。
/* ... */ SELECT ID, NAME FROM T //允许
SELECT /* ... */ ID, NAME FROM T //允许
SELECT ID, /* ... */ NAME FROM T //拦截
SELECT ID, NAME FROM T /* ... */ //拦截
有一些全局变量会暴露数据库信息,但有一些全局变量不得不使用。在mysql中,目前全局变量使用白名单机制,在白名单内的全局变量才会被允许使用。而且全局变量只允许用在SELECT_LIST和SET中使用。
SELECT @@SESSION.sql_mode //允许
SELECT @@GLOBAL.sql_mode // 允许
SELECT * FROM T WHERE @@SESSION.sql_mode = 'ANSI' //拦截
SELECT * FROM T WHERE @@sql_mode = 'ANSI' // 拦截