2017-01-18 3 views
0

Как правильно кодировать параметры запроса. Я передаю данные через Anti Samy, который выполняет очистку. Вслед за этим мне нужно передать очищенный метод unescapeHtml4. Потому что иногда у меня есть Json как мой параметр запроса (см. Пример 1 ниже).Как обрабатывать как санкции Json, так и HTML из параметров запроса?

В настоящее время мой код выглядит следующим образом:

String str = StringEscapeUtils.unescapeXml(xml); 
    ClearResult cr = antiSamy.scan(str); 
    String cleanStr = cr.getCleanHTML(); 
    String s = StringEscapeUtils.unescapeHtml4(cleanStr); 

Пример 1: Json как запрос:

если удалить номер строки 4, я в конечном итоге получить {& Quot имя & Quot: & Quot Mav & Quot}

Пример 2: Escaped результат следующий сценарий: < script> alert ("hi") < script>

Если я сохраню номер строки 4, я уязвим для XSS.

Как решить эту проблему? Я хочу обрабатывать параметры запроса JSON и HTML. Любая помощь будет оценена по достоинству.

ответ

2

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

Когда параметр содержит json, который вы декодируете, тогда не используйте против него антисамы.

Когда параметр содержит текст, который вы будете выводить как html, используйте антисамы.

Когда параметр содержит json, который сам по себе содержит некоторые значения, которые вы будете выводить как html, сначала декодируйте параметр как json, а затем используйте антисамы по отдельным значениям из json, которые вы планируете выводить как html.

Антисымия имеет специальную цель. Чтобы иметь дело с текстом, который вы хотите разрешить содержать HTML-теги. Не используйте антисамы для любых других данных. Вместо этого убедитесь, что синтаксис html экранирован во время вывода любого текста, полученного от пользователя, который явно не хочет содержать HTML-разметку.

0

Насколько я знаю, вы могли бы лучше заменить коды эвакуации впоследствии, если вы хотите иметь только одну функцию обработки JSON и HTML. Другой вариант - отделить JSON от HTML.

Это зависит от требований и полного сценария.