这是我在网站上传文本文件的原始代码:
<?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);
?>
答案 0 :(得分:1)
第一个代码不会将文件上传到您的服务器,它只会创建一个文本文件,其中包含客户端指定的名称和内容。
如果你没有指定myFile
的值,第二个代码可能会失败:第二个部分将尝试写入一个从未创建过的文件。
答案 1 :(得分:1)
你基本上允许将任何文件上传到当前目录....
例如,上传一个执行攻击者想要的PHP脚本
不......你永远不应该写那样的代码。