improve sql parser & wall filter

This commit is contained in:
wenshao
2013-04-05 01:59:44 +08:00
parent bec180c36f
commit d268227242
12 changed files with 211 additions and 105 deletions
@@ -38,7 +38,7 @@ public class MySqlWallDescribteTest extends TestCase {
public void test_not_allow() throws Exception {
WallConfig config = new WallConfig();
config.setVariantCheck(true);
config.setDescribeAllow(false);
Assert.assertFalse(WallUtils.isValidateMySql("describe t", config));
}
@@ -22,17 +22,17 @@ public class WallStatTest_WhiteList extends TestCase {
public void testMySql() throws Exception {
WallProvider provider = new MySqlWallProvider();
for (int i = 0; i < 1001; ++i) {
for (int i = 0; i < 3001; ++i) {
String sql = "select * from t where id = " + i;
Assert.assertTrue(provider.checkValid(sql));
}
WallTableStat tableStat = provider.getTableStat("t");
Assert.assertEquals(1001, tableStat.getSelectCount());
Assert.assertEquals(3001, tableStat.getSelectCount());
Assert.assertEquals(0, provider.getBlackListHitCount());
Assert.assertEquals(0, provider.getWhiteListHitCount());
Assert.assertEquals(1000, provider.getWhiteList().size());
Assert.assertEquals(1001, provider.getCheckCount());
Assert.assertEquals(2000, provider.getWhiteList().size());
Assert.assertEquals(3001, provider.getCheckCount());
}
}
@@ -64,6 +64,6 @@ public class ConfigErrorTestMysql extends TestCase {
Assert.assertEquals(0, LOG.getWarnCount());
dataSource.init();
Assert.assertEquals(1, LOG.getWarnCount());
Assert.assertEquals(0, LOG.getWarnCount());
}
}
@@ -18,9 +18,10 @@
*/
package com.alibaba.druid.bvt.sql.cobar;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.junit.Assert;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.statement.SQLSetStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDescribeStatement;