Во время исследования проблемы JSON vs XML я столкнулся с этим вопросом. Теперь одна из причин предпочтения JSON была указана как простота преобразования в Javascript, а именно с eval()
. Теперь это сразу показалось мне потенциально проблематичным с точки зрения безопасности.
Итак, я начал изучать аспекты безопасности JSON и в этом блоге о том, как JSON не так безопасен, как думают люди.. Эта часть торчала:
Обновление: Если вы делаете JSON 100% правильно, тогда у вас будет только объекты на верхнем уровне. Массивы, Строки, числа и т.д. завернуты. Объект JSON не будет работать to eval(), потому что JavaScript переводчик будет думать, что он смотрит на блок, а не объект. Эта имеет большое значение для защиты от эти атаки, однако все же лучше для защиты ваших защищенных данных с помощью не предсказуемые URL.
Хорошо, так что хорошее правило для начала: объекты JSON на верхнем уровне всегда должны быть объектами, а не массивами, числами или строками. Мне кажется хорошим правилом.
Есть ли что-нибудь еще или избегать, когда речь идет о безопасности JSON и AJAX?
В последней части приведенной цитаты упоминаются непредсказуемые URL-адреса. Кто-нибудь имеет больше информации об этом, особенно о том, как вы это делаете в PHP? Я гораздо более опытен в Java, чем PHP, и в Java это просто (в том, что вы можете сопоставить целый ряд URL-адресов с одним сервлетом), тогда как весь PHP, который я сделал, сопоставил один URL-адрес PHP script.
Кроме того, как именно вы используете непредсказуемые URL-адреса для повышения безопасности?