Очистить входные данные json на java-сервер - PullRequest
0 голосов
/ 02 апреля 2010

Я использую json для передачи данных между браузером и java-сервером.

Я использую Json-lib для преобразования между объектами java и json.

Я бы хотел исключить подозрительные вещи (например, doSomethingNasty ().) Из пользовательского ввода при преобразовании из json в java.

Я могу представить себе несколько моментов, в которых я мог бы сделать это:

  • Я мог бы изучить необработанную строку json и удалить забавные вещи
  • Я мог бы найти способ перехватить каждое значение json на пути к объекту java и найти там забавные вещи.
  • Я мог бы перебирать свои новые java-объекты сразу же после восстановления из json, искать любые поля, являющиеся строками, и разбирать там что-нибудь еще.

Какой лучший подход? Существуют ли какие-либо технологии, созданные для этой задачи, к которым я прибегаю к тому, что у меня уже есть?

Ответы [ 2 ]

1 голос
/ 05 апреля 2010

Я предлагаю подход 3: пересмотреть восстановленные объекты Java сразу по прибытии и до того, как любая другая логика сможет воздействовать на них. Создайте наиболее строгую проверку, с которой вы можете обойтись (то есть создайте белый список).

Вероятно, вы можете сделать это за один проход в глубину иерархии объектов, которую вы извлекаете из Json-lib. Как правило, вы не хотите принимать какие-либо функции JSON в своих объектах, и вам нужно убедиться, что все значения (числа, строки, глубина дерева объектов, ...) находятся в ожидаемых диапазонах. Да, это сложно, но поверьте мне, альтернатива хорошей проверке пользовательского ввода намного, намного хуже. Хорошей идеей может быть добавление ведения журнала, когда вы что-то исключаете, для диагностики любых возможных ошибок в коде проверки.

0 голосов
/ 02 апреля 2010

Как я понимаю, вам необходимо проверить данные JSON, поступающие в ваше приложение. Если вы хотите сделать белый список («Вы знаете, какие данные ожидаете, и ничто другое не является действительным»), то имеет смысл проверить ваши java-объекты после их создания («убедитесь, что не отправляете java-объект в БД или обратно». в пользовательский интерфейс до проверки). Если вы хотите создать черный список символов (вам известны некоторые символы угроз, которых вы хотите избежать »), то вы можете непосредственно посмотреть на строку json, поскольку эта проверка не сильно изменится в течение определенного периода времени, и даже если она Это означает, что вам нужно улучшить только одно общее место, поскольку перечисление iot будет зависеть от вашей бизнес-логики.

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