Очистка данных XML прежде, чем назвать SimpleXML

Это должно быть просто, но это ускользало от меня. Нам написали веб-сервис в PHP, который разбирает полезный груз XML, который входит как ПОЧТА, таким образом, полезный груз xml содержится в $ _POST переменная.

The service finds the POST var that looks like it has xml and then uses simplexml_load_string to load it up. It seems like whenever there are quotes in the data like this is a "test" or this
Customer's Serial Number the load fails.

Мой вопрос - то, что лучший способ состоит в том, чтобы санировать данные на ПОЧТЕ прежде, чем назвать simplexml_load_string ()? Я знаю, что PHP делает некоторую возможность избежать кавычек, найденных в $ _POST Вар:

magic_quotes_gpc On On
magic_quotes_runtime Off Off

Но этот подход, кажется, не, решают его:

trim(stripslashes($xmlFromPost));

Отрывок от XML, рассматриваемого


1
CDL-BM01
Biscuit Miller's, "Blues with a..."
1
EA
0.00
USD

884502780246
GTIN-12

Look for xml in $_POST if(isset($_POST)){

foreach($_POST as $k=>$v){

    if(preg_match('/^\<\?xml/',trim($v))){

        $postXMLPayload = trim(stripslashes($v));
        break;
    }

  }
}

libxml_use_internal_errors(true);
$xml = simplexml_load_string($postXMLPayload);

Errors
Premature end of data in tag BuyerItemDesc line 79
Premature end of data in tag Item line 76
Premature end of data in tag Items line 75
Premature end of data in tag PODetail line 74
Premature end of data in tag NAMM_PO line 2

UPDATE This was caused by unsanitized data in the xml element. To correct this, I added htmlspecialchars():

$payload = htmlspecialchars(stripslashes(trim($postXMLPayload)));
1
nl ja de
Спасибо. Эта конкретная проблема была решена, управляя почтовой стоимостью через htmlspecialchars (). Были незаконные случайные работы в данных об элементе, таким образом, SimpleXML задыхался
добавлено автор Slinky, источник
Это может или может не быть what' s порождение вашей проблемы, но примечания, которое magic_quotes_gpc не должно быть включено, и код, должен быть переписан, чтобы выступить, надлежащая возможность избежать не полагаются на эту выдумку. Особенность была официально удержана от использования в PHP 5.3 и удалена в 5.4. Посмотрите php.net/manual/en/security.magicquotes.php
добавлено автор IMSoP, источник

2 ответы

Это было вызвано несанированными данными в элементе XML. Чтобы исправить это, я добавил htmlspecialchars ():

$payload = htmlspecialchars(stripslashes(trim($postXMLPayload)));
0
добавлено

Это было вызвано несанированными данными в элементе XML. Чтобы исправить это, я добавил htmlspecialchars ():

$payload = htmlspecialchars(stripslashes(trim($postXMLPayload)));
0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp