2010-08-12 2 views
1

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

В принципе все, что я до сих пор:

<?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

Вы должны рассмотреть:

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

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

$post = fopen("php://input", "r"); 
if ($post === false) { ... } 
file_put_contents($xmlfile, $post); 
+0

Привет, ок спасибо за это. Какой у вас есть пароль пользователя, который можно использовать? – thegunner

+0

Первый момент важен. Вы не хотите, чтобы произвольные файлы (java-апплет, swf и т. Д.) Были доступны публично. – h3xStream

0

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

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

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