This commit is contained in:
温少
2012-03-16 20:14:01 +08:00
parent ca3da4281e
commit d3825c87c6
4 changed files with 45 additions and 28 deletions
@@ -38,37 +38,35 @@ public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisi
private final Set<String> permitFunctions = new HashSet<String>();
private final Set<String> permitTables = new HashSet<String>();
private final Set<String> permitSchemas = new HashSet<String>();
private final Set<String> permiNames = new HashSet<String>();
private final Set<String> permitNames = new HashSet<String>();
private final Set<String> permitObjects = new HashSet<String>();
private final List<Violation> violations;
public MySqlWallVisitor(){
this(new ArrayList<Violation>());
this(new ArrayList<Violation>(), true);
}
public MySqlWallVisitor(boolean loadDefault) {
this(new ArrayList<Violation>(), loadDefault);
}
public MySqlWallVisitor(List<Violation> violations){
public MySqlWallVisitor(List<Violation> violations, boolean loadDefault){
this.violations = violations;
permitFunctions.add("version");
permitFunctions.add("load_file");
permitFunctions.add("databse");
permitFunctions.add("schema");
permitFunctions.add("user");
permitFunctions.add("system_user");
permitFunctions.add("session_user");
permitFunctions.add("benchmark");
permitFunctions.add("connection_id");
permitFunctions.add("current_user");
loadDefault();
}
permitSchemas.add("information_schema");
permitSchemas.add("mysql");
permitTables.add("outfile");
public void loadDefault() {
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-mysql.txt");
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-mysql.txt");
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-mysql.txt");
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-mysql.txt");
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-mysql.txt");
}
public Set<String> getPermitNames() {
return permiNames;
return permitNames;
}
public Set<String> getPermitFunctions() {
@@ -116,7 +114,7 @@ public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisi
WallVisitorUtils.checkCondition(this, x.getHaving());
return true;
}
public boolean visit(MySqlSelectGroupBy x) {
WallVisitorUtils.checkCondition(this, x.getHaving());
return true;
@@ -127,26 +125,25 @@ public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisi
WallVisitorUtils.checkCondition(this, x.getWhere());
return true;
}
@Override
public boolean visit(MySqlDeleteStatement x) {
WallVisitorUtils.checkCondition(this, x.getWhere());
return true;
}
@Override
public boolean visit(SQLDeleteStatement x) {
WallVisitorUtils.checkCondition(this, x.getWhere());
return true;
}
@Override
public boolean visit(SQLUpdateStatement x) {
WallVisitorUtils.checkCondition(this, x.getWhere());
return true;
}
@Override
public boolean visit(Limit x) {
if (x.getRowCount() instanceof SQLNumericLiteralExpr) {
@@ -44,12 +44,20 @@ public class OracleWallVisitor extends OracleASTVIsitorAdapter implements WallVi
private final List<Violation> violations;
public OracleWallVisitor(){
this(new ArrayList<Violation>());
this(new ArrayList<Violation>(), true);
}
public OracleWallVisitor(boolean loadDefault) {
this(new ArrayList<Violation>(), loadDefault);
}
public OracleWallVisitor(List<Violation> violations){
public OracleWallVisitor(List<Violation> violations, boolean loadDefault){
this.violations = violations;
loadDefault();
}
public void loadDefault() {
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-oracle.txt");
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-oracle.txt");
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-oracle.txt");
@@ -180,13 +188,13 @@ public class OracleWallVisitor extends OracleASTVIsitorAdapter implements WallVi
WallVisitorUtils.checkCondition(this, x.getWhere());
return true;
}
@Override
public boolean visit(SQLUpdateStatement x) {
WallVisitorUtils.checkCondition(this, x.getWhere());
return true;
}
@Override
public boolean visit(OracleUpdateStatement x) {
WallVisitorUtils.checkCondition(this, x.getWhere());
@@ -0,0 +1,10 @@
version
load_file
databse
schema
user
system_user
session_user
benchmark
connection_id
current_user
@@ -0,0 +1,2 @@
information_schema
mysql