Как правильно предотвратить XSS - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть требование предотвратить XSS. Я не знаю много о безопасности приложений, но я знаю, что вы можете использовать белые / черные списки и URL-кодирование / декодирование, чтобы предотвратить это. Я пытался реализовать белый список, но мне сказали, что все еще существует уязвимость XSS, потому что я не реализовал кодировку URL.

    @GET
    @Path("/somepath/{table}/file")
    @Consumes("application/x-www-form-urlencoded")
    @Produces({ "text/html" })
    public Response getPage(@PathParam("table") String table, @QueryParam("file") String file) {
    // test for invalid input
    if (!MyUtil.isValidInput(table, file))
        throw new IllegalArgumentException("Invalid table or file name");

    Map<String, Object> model = new HashMap<>(); // to return data to front end
    try {
        useParameters(table, file);
        model.put("tableName", table);
        model.put("fileName", file);
    } catch (Exception e) {
        LOGGER.error("Error getting file page", e);
        model.put("error", e.toString());
    }
    return new Viewable("/pathToJspFile", model);
}

В этом простом методе MyUtil.isValidInput () проверяет входные значения против белого списка персонажей. Если это хорошо, я продолжаю возвращать страницу jsp с этими значениями, в противном случае выдает ошибку.

Итак, я хочу знать, является ли это правильным способом реализации белого списка, если мне нужно (или должен) реализовать кодировку URL. И если мне нужно реализовать кодирование URL, где его нужно декодировать для использования?

Я тоже немного растерялся, потому что думал, что строка @Consumes ("application / x- www-form-urlencoded") автоматически кодирует URL. И Spring автоматически декодирует параметры формы для использования в соответствии с this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...