2012-06-27 5 views
0

Пользователи называют API веб-службы в моем PHP-коде, но неправильно кодируют ввод (например, знак & и т. Д.), Поэтому из-за бессмыслицы (я не могу использовать b * слово здесь, но вы знаете, что разработчик не заботится о политике или чувствах, вы делаете это правильно или нет!) Это моя проблема, чтобы исправить это ... Как я могу кодировать входной XML, прежде чем пытаться его проанализировать в PHP ?PHP Кодирование специальных символов во входной веб-службе XML

Я сделал замену строки для знака &, но, кроме того, в юниверсе есть более недопустимые символы, которые могут использовать эти люди (слово *).

ответ

0

Я почти полностью убедитесь, что для этого нет встроенной функции, в php. Поскольку минимум, который нужны модулю php, является ... надлежащим закодированным xml-файлом (например, для libxml/libdom)

Неправильный закодированный файл трудно дезинфицировать, потому что вы должны учитывать «что должно быть закодировано» и «что не должен быть закодирован «

вам нужно разметить свой входной XML, то вам необходимо изучить каждый кусок и дезинфицировать неправильные куски кода, например, символ», содержащийся внутри атрибута

это тяжелая работа , то лучше, что вы можете сделать, исправить или исправить исходный код xml

IMHO!

0

Я рекомендовал бы возвращающий HTTP 400 ошибка, а это значит, что «запрос не может быть понят сервером из-за некорректного синтаксиса.» (RFC 2616)

Поскольку вы ждете правильный XML, вы можете загрузите его в DOMDocument с помощью loadXml и используйте результат libxml_get_errors, чтобы увидеть ошибки XML (я бы тоже рекомендовал использовать libxml_use_internal_errors(true)).

Вы можете вернуть ошибки libxml (например, «Небезопасный» & «в запросе» и т. Д.) В тело ответа.

Смежные вопросы