Я заново изобретаю колесо и создаю свои собственные методы синтаксического анализа JSON в Java.
Я собираюсь (очень приятно!) Документация на json.org .Единственная часть, в которой я не уверен, это где "или управляющий символ"
Поскольку документация настолько ясна, а JSON настолько прост и легко реализуемЯ подумал, что я бы пошел дальше и потребовал бы спецификацию вместо того, чтобы быть свободным.
Как мне правильно убрать управляющие символы в Java?Возможно, есть диапазон Юникода?
Редактировать: A (обычно?) Недостающий кусок головоломки
I было сообщено что есть другие управляющие символы за пределами определенного диапазона 1 2 , которые могут вызывать затрудненияв тегах <script>
.
В первую очередь это символы U + 2028 и U + 2029, разделитель строк и абзацев, которые действуют как символы новой строки.Введение новой строки в середину строкового литерала, скорее всего, вызовет синтаксическую ошибку (неопределенный строковый литерал). 3
Хотя я считаю, что это не представляет угрозы XSS, все же хорошая идея добавить дополнительные правила для использования в <script>
теги.
- Просто будьте просты и закодируйте все не-ASCII-печатаемые символы с пометкой
\u
.Эти персонажи необычны для начала.Если хотите, вы можете добавить в белый список, но я рекомендую использовать белый список. - Если вы не знаете, не забывайте о
</script
(без учета регистра), что может привести к внедрению HTML-скрипта на вашу страницу с символами </script><script src=http://tinyurl.com/abcdef>
.Ни один из этих символов по умолчанию не кодируется в JSON.