通过http post - security接收xml文件

时间:2010-08-12 12:18:34

标签: php security http-post

我在Web服务器上设置了一个基本的php脚本,以接受通过Http post发送的xml文件。到现在为止还挺好。但是我想知道安全问题以及在我能够实现之前需要注意的其他事情。有谁做过这个以及我应该注意什么?

基本上我到目前为止所有人都是:

<?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文件写入Web服务器。我需要做什么检查等?

谢谢,

2 个答案:

答案 0 :(得分:2)

你应该考虑:

  • 您是否希望通过HTTP访问您正在编写的文件。如果不这样做,则应将它们移动到Web服务器无法访问的目录中。
  • 这容易受到拒绝服务攻击;攻击者可以使用垃圾XML文件填充磁盘并使磁盘空间不足。您可以通过保护对PHP脚本的访问(如果可能)来防止这种情况,否则请检查可用磁盘空间。

顺便说一下,这会更节省内存:

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

答案 1 :(得分:0)

您不是让用户决定文件的名称。这很好。

我在这里看到的最重要的问题是你没有限制最大文件大小。如果没有这个,用户可以垃圾邮件服务器并填满硬盘,导致其出现故障。