#java #spring-boot #xss #checkmarx #stringescapeutils
Вопрос:
Я запустил проверку на маркеры в своем репозитории, и это дало довольно много потенциальных результатов отраженной атаки XSS. Вот код для моего контроллера :
@PutMapping("/calculate")
public UpdatedResponse calculateModel(
@RequestBody ModelDocument modelDocument, @RequestParam String clientFirstName,
@PathVariable String clientId, @PathVariable String clientLastName
) {
// Sanitize the parameters
modelDocument = checkForCSS(modelDocument); // NOT ACCEPTING THIS
clientId = StringEscapeUtils.escapeHtml4(clientId);
clientFirstName = StringEscapeUtils.escapeHtml4(clientFirstName);
clientLastName = StringEscapeUtils.escapeHtml4(clientLastName);
.....
}
В то время как я смог разрешить предупреждения clientId, clientFirstName and clientLastName
, так как все они были строковыми переменными. Но как мне это сделать, modelDocument
поскольку это сама по себе определяемая пользователем переменная, внутри которой определены различные строки, карты и т. Д.
Метод checkForCSS определен, как показано ниже, но не распознается сканированием:
public static <T> T checkForCSS(T t) {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
String agendaModelStr = sanitize(gson.toJson(t));
return gson.fromJson(agendaModelStr, (Type) t.getClass());
}
public static String sanitize(String string) {
return Jsoup.clean(string, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
Любая помощь будет признательна. Спасибо!
Комментарии:
1. XSS-это проблема вывода, а не проблема ввода. Этот метод возвращает JSON или HTML?
2. @DujSn28 вам придется использовать Checkmarx CxAudit для создания пользовательского запроса Checkmarx (переопределяющего базовый отраженный запрос XSS Checkmarx), чтобы распознать ваш метод checkCSS как допустимое средство очистки
Ответ №1:
попробуйте это:
ESAPI.encoder().encodeForHTML(clientFirstName);
и сделайте это для всех ваших параметров запроса.
Комментарии:
1. В вопросе говорится, что они решили этот вопрос для
clientFirstName
.