У меня есть следующий код, который управляет функцией поиска страницы, Iv реализовал подготовленный оператор для остановки SQL инъекций, теперь я пытаюсь реализовать IDS, который будет предупреждать, если пользователь попытается сделать инъекцию SQL ,
Этот IDS очень прост c и будет предупреждать, только если пользователь попробует строку, такую как 'OR'1 = 1. Однако, так как реализация обнаружения вторжения всякий раз, когда я ищу строку с 1 = 1, я получаю ошибку. Я попытался заменить его на query.contains («яблоко»), и всякий раз, когда я ищу «яблоко», я получаю ошибку, поэтому ошибка возникает только при поиске слова в выражении. Функция поиска и подготовленный оператор все еще работают.
@Timed
public List<Friends> searchFriends(@RequestParam String query) {
log.debug("REST request to search Friends for query {}", query);
if (query.contains("1=1")) {
DetectionPoint cie1 = new DetectionPoint(DetectionPoint.Category.INPUT_VALIDATION, "CIE1");
EventEmitter cie1Emitter = new EventEmitter(cie1);
cie1Emitter.send();
}
String queryStatement = "SELECT * FROM Friends WHERE name like ?";
log.info("Final SQL query {}", queryStatement);
ResultSet rs = null;
try (Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/SQL_DB", "root", "root"); PreparedStatement stmt = con.prepareStatement(queryStatement)) {
stmt.setString(1, "%" + query + "%");
rs = stmt.executeQuery();
return extractFriend(rs);
} catch (SQLException ex) {
log.error(ex.getMessage(), ex);
return new ArrayList();
} finally {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException ex) {
log.error(ex.getMessage(), ex);
}
}
}
ОШИБКА
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:766)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:724)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:680)
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:466)