Разрешить '/' в кодировщике OWASP с помощью метода encodeForHTML

Мне нужно очистить значение параметра Http, чтобы предотвратить атаку xss. Я использую банку owasp ниже. esapi-2.1.0.1.jar

У меня есть дата параметра, которая содержит значение, разделенное знаком «/». дата=20.10.2017

Вот сегмент кода, который я использую для кодирования значения.

import org.owasp.esapi.ESAPI;
import org.owasp.esapi.Encoder;

String s = "20/10/2017";
String ts = encoder.encodeForHTML(s);
System.out.println(ts);

Он печатает 20/10/2017, но мне нужно разрешить '/', и значение должно быть таким, как 20/10/2017

Я просмотрел исходный код и обнаружил, что некоторые символы разрешены и объявлены в финальном массиве.

private final static char[]     IMMUNE_HTML = { ',', '.', '-', '_', ' ' };

Я не могу найти способ обойти '/'


person shubham12511    schedule 26.10.2017    source источник


Ответы (1)


Если вы хотите полностью предотвратить xss без использования какого-либо jar-кодировщика, приведите входную строку к объекту java типа данных Date, а затем снова верните ее в строку, если вы действительно хотите, чтобы вывод был в строке.

Если вы действительно хотите использовать jar кодировщика, используйте любой простой метод, например Encode.forHtml(str), который не кодирует '/'.

person adarsha bv    schedule 18.02.2018
comment
Мне понравилась идея приведения к типу даты, но я искал более общее решение, такое как экранирование большего количества значений, а не даты, а также обход некоторых других символов ('\', '$'). - person shubham12511; 20.02.2018