这两个函数是否都经过了SQL注入的净化/安全处理?例如,考虑以下代码:
@SqlUpdate("INSERT INTO <tableName> (<columns>) VALUES (<values>)")
public abstract void addRowToDataset(@Define("tableName") String tableName, @Define("columns") String columns, @BindIn("values") Collection<Object> values);
我的理解是,@define
直接将字符串插入查询中,而 @bind
则进行了过滤。因此,如果我们控制了 columns
和 tableName
参数,只有 values
参数是用户输入的,那么就不会出现问题。