За последние 24 часа нас посетили 62167 программистов и 1786 роботов. Сейчас ищут 876 программистов ...

Безопасность сохранения XML в файл

Тема в разделе "PHP для новичков", создана пользователем velocat, 18 ноя 2009.

  1. velocat

    velocat Активный пользователь

    С нами с:
    19 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    Возник вопрос, безопасно ли сохранять в файл сформированный посредством JavaScript документ XML,
    Учитывая, что он передается через hidden поле формы.

    Т.е.:

    1. JS формирует некий текст (new_XML)


    2. передает их в INPUT HIDDEN:
    HTML:
    1.  
    2. <form name="post">
    3. <input type="hidden" name="content" id="content" value="">
    4. </form>
    5.  
    [js]document.post.content.value = new_XML;[/js]


    3. при отправке формы выполняется PHP скрипт по сохранению этого текста как файла:
    PHP:
    1.  
    2. <?
    3. $content = $_REQUEST['content'];
    4. $filename_xml = $root_path . 'filebase/xml/'. $_id . '_document.xml';
    5. $fp = fopen($filename_xml, "w");
    6. $result = fwrite($fp, $content);
    7. fclose($fp);
    8. ?>
    9.  
    Почему через INPUT? т.к. это лишь часть отсылаемой формы.
    Одолевают сомнения, что в момент передачи формы поле может быть подменено.
    Как безопасно проверить (во время выполнеия PHP скрипта, что передан именно тот контент?
    Например на наличие какой нибудь вредоносной вставки в XML документ.

    PS Может быть есть какие то стандартные методы проверки XML?
     
  2. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Ввести "свой проверяемый" первый параметр в xml и при получении соответственно проверять его наличие, это как проверить то ли мы получаем, а далее как обычно работа по безопасности.
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Что мешает оставить "свой проверяемый" первый параметр в xml и изменить что-то другое?

    Можно конечно хэшировать xml строку и посылать результат хэша на сервер Ajax'ом. Но это тоже слабая защита (пока не разберут js и не поймут, что это такое посылается).

    Я бы наверное посылал значения, на основе которых формируется xml. И формировал бы результат уже на сервере.
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Что значит "именно тот"?
    И как потом используется этот XML?
     
  5. velocat

    velocat Активный пользователь

    С нами с:
    19 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    Именно это я и имел ввиду, что структура остается неизменной, но в тело докумета злоумышленник внедрит свой код
    HTML:
    1.  
    2. <? xml.... ?>
    3. <document>
    4.   [color=green]< передаваемое содержимое >[/color]
    5.  
    6.   [color=red]< Внедренное содержимое, например какой то JS >[/color]
    7.  
    8. </document>
    9.  
    10.  
    Увы, но объём значений может быть достаточно большим, и формируется множеством циклов, в зависимости от множества разных условий.


    1. "именно тот", значит именно тот который отдал JS и вложил в поле формы, а не подменённый на какой то другой.

    2. Это KML, то есть XML для Google Map и Google Earth.

    На самих картах, насколько я знаю, выполнение скриптов запрещено, т.е при выводе ничего страшного не ппроизойдёт.

    Но, для скачивания пользователями им дается прямая ссылка на этот файл, да и с самих Google карт скачивание производится именно по прямой ссылке.

    Соответственно и возникает вопрос о безопасности на стороне клиента скачавшего файл.

    Для примера, вот ссылка на тестовый вывод KML:
    http://maps.google.com/?q=http://www.ve ... /5_wpt.kml


    PS Посмотрел руководство, и увы... выполнение скриптов разрешено из KML:
    http://code.google.com/intl/ru-RU/apis/ ... escription