fwrite漏洞

时间:2012-12-20 18:25:03

标签: php file-upload

这是我在网站上传文本文件的原始代码:

<?php
$myFile = $_GET['myFile'];
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET['stringData'];
fwrite($fh, $stringData);
fclose($fh);
?>

对你来说是否足够安全,或者我应该使用这样的东西:

<?php
if (isset($_GET['myFile'])) {
    $myFile = basename($_GET['myFile']);
    $fh = fopen($myFile, 'w') or die("can't open file");
}
$stringData = $_GET['stringData'];
fwrite($fh, $stringData);
fclose($fh);
?>

2 个答案:

答案 0 :(得分:1)

第一个代码不会将文件上传到您的服务器,它只会创建一个文本文件,其中包含客户端指定的名称和内容。

如果你没有指定myFile的值,第二个代码可能会失败:第二个部分将尝试写入一个从未创建过的文件。

答案 1 :(得分:1)

你基本上允许将任何文件上传到当前目录....

例如,上传一个执行攻击者想要的PHP脚本

不......你永远不应该写那样的代码。

  1. 确保仅将文件上传到特定位置。
  2. 你给他们起名字 - 永远不要接受用户。
  3. 了解更多......