PHP图像上传问题 形象? $path=“uploads/”; $path.=basename($_文件['image']['name']); $path=addslashes($path); $name=$_文件['image']['name']; echo$path; 移动上传的文件($文件['image']['tmp\u名称],$path);

PHP图像上传问题 形象? $path=“uploads/”; $path.=basename($_文件['image']['name']); $path=addslashes($path); $name=$_文件['image']['name']; echo$path; 移动上传的文件($文件['image']['tmp\u名称],$path);,php,Php,上面的代码应该可以工作,因为我有一个非常类似的工作整洁。但是,它似乎没有从表单(最上面的代码)中提取任何内容。如果有人能指出我是一个傻瓜并打破这一点,我将不胜感激。确保您的标签上有enctype=“multipart/form data”属性。您知道这是完全不安全的,对吗?在只有可信用户的intranet上,您可能可以侥幸逃脱,但在其他情况下,这段代码肯定会带来麻烦 文件['name']不能依赖于包含任何可用作文件名的内容,攻击者可以很容易地将其设置为包含“..”路径部分的内容,以覆盖uploa

上面的代码应该可以工作,因为我有一个非常类似的工作整洁。但是,它似乎没有从表单(最上面的代码)中提取任何内容。如果有人能指出我是一个傻瓜并打破这一点,我将不胜感激。

确保您的
标签上有
enctype=“multipart/form data”
属性。

您知道这是完全不安全的,对吗?在只有可信用户的intranet上,您可能可以侥幸逃脱,但在其他情况下,这段代码肯定会带来麻烦

文件['name']不能依赖于包含任何可用作文件名的内容,攻击者可以很容易地将其设置为包含“..”路径部分的内容,以覆盖uploads文件夹之外的文件。通过上传扩展名为.php的文件,他们很可能在您的服务器上执行任意代码

如果您使用文件['name'],则必须对其进行严格清理(例如,删除所有非字母数字字符,并自行添加适当的文件扩展名),并且您必须处理根本无法获得文件名的可能性(在这种情况下,您必须根据随机数补足一个文件名)

“echo$path”还提供HTML注入,从而导致跨站点脚本攻击


addslashes()不会保护您免受目录遍历或HTML注入的影响。它也无法正确地转义SQL字符串,这是它最初的用途。一个很好的经验法则是,任何使用addslashes()的应用程序(显式地,或通过magic_引号隐式地)都是错误的。

请添加var_dump($_文件)的输出;对于您的问题,请向我们展示完整的表格(仅相关部分)和完整的脚本(同样仅相关部分)。我被认为是一个白痴,一小时好几次,所以没关系。
<td valign="top">
<input type="hidden" name="MAX_FILE_SIZE" value="12485760" />
Image?</td>
<td><input type="file" name="image">

$path = "uploads/";
$path .= basename($_FILES['image']['name']);

$path = addslashes($path);
$name = $_FILES['image']['name'];

echo $path;

move_uploaded_file($_FILES['image']['tmp_name'], $path);