Ошибка 400 при внедрении IDS в функцию поиска в Java - PullRequest
0 голосов
/ 23 марта 2020

У меня есть следующий код, который управляет функцией поиска страницы, 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)
...