PHP图像上传。 如何防止包含代码的图像?
根据我的理解, - 图像(jpeg,gif等)可能包含有效的php / python / perl等代码。 所以 - 任何人都可以创建一个有效的jpeg文件,同时可以由PHP解释器执行。 (这里是描述:链接)
所以 - 我想知道 - 是否有办法从图像中去除恶意代码? 会记录与GD或imagemagic工作的图像?
谢谢!
实际图像不包含代码。 但是没有任何东西阻止某人试图获取上传的“图片”文件,然后试着让它执行。
应该设置你的解释器(Perl,PHP等),以便它们只执行某些文件类型(即.php或.php5)。 没有理由Perl或PHP应该解析图像文件。
只需使用以下常识来保护自己:
1)验证文档的MIME类型
2)实施仅允许上传特定扩展名文件的策略
3)不要接受面值的文件名。 生成您自己的内部文件名并使用数据库表来保留映射。
4)如果你真的偏执狂,找一些代码来检查字节签名对于给定的文件类型上传是否有效。
您应该配置您的网络服务器不要允许您的图像文件名扩展名被PHP解释。 正如问题中链接的页面所示,图像可以包含PHP代码。 总是检查白名单的文件扩展名:
<?php
$whitelist = '/.(?:jpe?g|png|gif)$/i';
if (!preg_match($whitelist, $_FILES['userfile']['name'])) {
echo "Bad filename extension.";
exit;
}
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.";
} else {
echo "File uploading failed.";
}
?>
链接地址: http://www.djcxy.com/p/52849.html
上一篇: PHP image uploads. how do I protect against images containning code?