我有以下枚举:的Java枚举值和SQL注入
public enum AccountStatus {
ENABLED,
CONFIRMATION_PENDING,
EXPIRED,
LOCKED,
DISABLED,
CREDENTIALS_EXPIRED,
}
那我结合复选框在JSP形式:
<li><form:checkbox path="accountStatus" value="ENABLED" label="Enabled" /></li>
<li><form:checkbox path="accountStatus" value="CONFIRMATION_PENDING" label="Confirmation Pending" /></li>
...
<li><form:checkbox path="accountStatus" value="CREDENTIALS_EXPIRED" label="Credentials Expired" /></li>
在我的控制器时,我得到的选择复选框值我将字符串转换为一个枚举如下:
AccountStatus accountStatus = AccountStatus.valueOf("selected string here");
然后在我的DAO(使用Spring JdbcTemplate)我查询我的数据基地使用选择的值:通过使用AccountStatus.valueOf(...)
String SQL = "SELECT * FROM TABLE_A WHERE column = \'" + accountStatus.name() + "\'";
jdbcTemplate.query(SQL, new MyMapper());
由于我选择了验证复选框每个用户,从SQL注入做安全的这种方式?
为什么你不使用参数化查询? – cubrr
我的SQL查询比较复杂,我只写了一个简单的例子。所以我必须根据用户输入的值动态生成SQL查询。 – karim
所以你仍然可以参数化。 – OldProgrammer