我有以下枚舉:的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