получение XML-файлов через HTTP-пост - безопасность - PullRequest
1 голос
/ 12 августа 2010

У меня есть базовый php-скрипт, настроенный на веб-сервере для приема XML-файлов, полученных через Http-сообщение. Все идет нормально. Но я задаюсь вопросом о проблемах безопасности и о других вещах, о которых мне нужно знать, прежде чем я смогу это выпустить. Кто-нибудь делал это раньше и о чем я должен знать?

В основном все, что у меня есть, это:

<?php   

header('Content-type: text/xml');

if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
    $postText=file_get_contents('php://input');
    $datetime=date('ymdHis'); 
    $xmlfile="myfile" . $datetime . ".xml"; 
    $FileHandle=fopen($xmlfile, 'w') or die("can't open file"); 
    fwrite($FileHandle, $postText); 
    fclose($FileHandle);
    echo 
    '<?xml version="1.0" encoding="UTF-8"?>
    <cXML>
    <Response>
    <Status code="200" text="OK">OK</Status>
    </Response>
    </cXML>';
}
?>

, который просто записывает XML-файлы на веб-сервер. Какие проверки мне нужно сделать и т.д.?

Спасибо

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Вам следует учитывать:

  • Хотите ли вы, чтобы файлы, которые вы пишете, были доступны через HTTP.Если вы этого не сделаете, вам следует переместить их в каталог, к которому веб-сервер не может получить доступ.
  • Это подвержено атаке типа «отказ в обслуживании»;Злоумышленник может заполнить ваш диск мусорными XML-файлами и заставить вас исчерпать место на диске.Вы можете предотвратить это, обеспечив доступ к вашему PHP-сценарию (если это возможно), в противном случае проверьте доступное дисковое пространство.

Кстати, это будет более эффективным с точки зрения памяти:

$post = fopen("php://input", "r");
if ($post === false) { ... }
file_put_contents($xmlfile, $post);
0 голосов
/ 12 августа 2010

Вы не позволяете пользователю выбирать имя файла.Это хорошо.

Самая важная проблема, которую я вижу здесь, заключается в том, что вы не ограничиваете максимальный размер файла.Без этого пользователи могут спамить ваш сервер и заполнять жесткий диск, вызывая его неисправность.

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