improve sql wall

This commit is contained in:
kiki
2013-09-10 14:19:56 +08:00
parent b8556813f2
commit afca1fe18f
10 changed files with 217 additions and 161 deletions
@@ -27,7 +27,7 @@ public class MySqlWallTest142 extends TestCase {
public void test_false() throws Exception {
WallProvider provider = new MySqlWallProvider();
String sql = "SELECT * FROM `my_crons` WHERE 1 OR nextrun = '0' ";
String sql = "SELECT * FROM `my_crons` WHERE 1 AND nextrun = '0' ";
Assert.assertTrue(provider.checkValid(sql));
}
}
@@ -44,6 +44,7 @@ public class MySqlWallTest91 extends TestCase {
provider.getConfig().setLimitZeroAllow(true);
provider.getConfig().setCommentAllow(true);
provider.getConfig().setConditionDoubleConstAllow(true);
provider.getConfig().setConditionLikeTrueAllow(true);
return provider;
}
@@ -160,6 +161,14 @@ public class MySqlWallTest91 extends TestCase {
}
}
public void test_true5() {
WallProvider provider = initWallProvider();
{
String sql = "select * from view_featureWarm where 1 = 1 and MaterialID in (select Materialid from material where Code like '%%' and name like '%%' and specs like '%%') and sumbalcqty <> 0";
Assert.assertTrue(provider.checkValid(sql));
}
}
public void test_true() throws Exception {
WallProvider provider = initWallProvider();
{
@@ -44,6 +44,7 @@ public class SQLServerWallTest_0 extends TestCase {
provider.getConfig().setLimitZeroAllow(true);
provider.getConfig().setCommentAllow(true);
provider.getConfig().setConditionDoubleConstAllow(true);
provider.getConfig().setConditionLikeTrueAllow(true);
return provider;
}
@@ -136,6 +137,22 @@ public class SQLServerWallTest_0 extends TestCase {
}
}
public void test_true6() throws Exception {
WallProvider provider = initWallProvider();
{
String sql = "select count(1) from [Tiger_Help] where 1 = 1 and id = 1";
Assert.assertTrue(provider.checkValid(sql));
}
}
public void test_true7() throws Exception {
WallProvider provider = initWallProvider();
{
String sql = "select objjc,objname,pwd,servadd from wfp..wfpsys_user where objname in(select name from master..sysdatabases) ";
Assert.assertTrue(provider.checkValid(sql));
}
}
public void test_true() throws Exception {
WallProvider provider = initWallProvider();
{
@@ -23,16 +23,17 @@ import com.alibaba.druid.wall.WallUtils;
/**
* 这个场景,检测可疑的Having条件
*
* @author wenshao
*
*/
public class WallSelectWhereTest0 extends TestCase {
private String sql = "SELECT F1, F2 from t WHERE 1 = 1 OR F1 = ?";
private String sql = "SELECT F1, F2 from t WHERE 1 = 1 AND F1 = ?";
public void testMySql() throws Exception {
Assert.assertTrue(WallUtils.isValidateMySql(sql));
}
public void testORACLE() throws Exception {
Assert.assertTrue(WallUtils.isValidateOracle(sql));
}
@@ -23,24 +23,24 @@ import com.alibaba.druid.wall.WallUtils;
/**
* 这个场景,检测可疑的Having条件
*
* @author wenshao
*
*/
public class WallSelectWhereTest1 extends TestCase {
public void testMySql_true() throws Exception {
Assert.assertTrue(WallUtils.isValidateMySql("SELECT F1, F2 from t WHERE 1 = 1 OR FID = ?"));
Assert.assertTrue(WallUtils.isValidateMySql("SELECT F1, F2 from t WHERE 1 = 1 AND FID = ?"));
}
public void testORACLE_true() throws Exception {
Assert.assertTrue(WallUtils.isValidateOracle("SELECT F1, F2 from t WHERE 1 = 1 OR FID = ?"));
Assert.assertTrue(WallUtils.isValidateOracle("SELECT F1, F2 from t WHERE 1 = 1 AND FID = ?"));
}
public void testMySql_false() throws Exception {
Assert.assertFalse(WallUtils.isValidateMySql("SELECT F1, F2 from t WHERE FID = ? OR 1 = 1"));
Assert.assertFalse(WallUtils.isValidateMySql("SELECT F1, F2 from t WHERE 1 = 1 AND FID = ? OR 1 = 1"));
}
public void testORACLE_false() throws Exception {
Assert.assertFalse(WallUtils.isValidateOracle("SELECT F1, F2 from t WHERE FID = ? OR 1 = 1"));
Assert.assertFalse(WallUtils.isValidateOracle("SELECT F1, F2 from t WHERE 1 = 1 AND FID = ? OR 1 = 1"));
}
}