在PHP中验证文件上载的正确方法-包括用户更改文件扩展名?
目前,我在允许上传图像之前,先在PHP中检查图像的所有元素。但是当涉及到像文件扩展名这样的事情时,我有点担心 我使用以下命令仅允许上载特定类型的文件:在PHP中验证文件上载的正确方法-包括用户更改文件扩展名?,php,image,file,validation,upload,Php,Image,File,Validation,Upload,目前,我在允许上传图像之前,先在PHP中检查图像的所有元素。但是当涉及到像文件扩展名这样的事情时,我有点担心 我使用以下命令仅允许上载特定类型的文件: $allowed_ext = array("jpeg", "jpg", "gif", "png"); $tmp_ext = explode(".", $_FILES["file"]["name"]); $ext = strtolower(end($tmp_ext)); if ((($_FILES["file"]["type"] == "ima
$allowed_ext = array("jpeg", "jpg", "gif", "png");
$tmp_ext = explode(".", $_FILES["file"]["name"]);
$ext = strtolower(end($tmp_ext));
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/png"))
&& in_array($ext, $allowed_ext)) {
//Continue
} else {
//Don't allow
}
但这会阻止所有形式的用户自己更改文件扩展名吗?e、 g.如果用户将恶意文件的扩展名更改为.jpeg或.png-这会阻止它吗
我找不到任何澄清这一点的帖子,因此非常感谢您的帮助 简而言之,不,你不能依赖MIME类型。类型和文件扩展名都由客户端提供
看起来您可以使用getimagesize()来验证图像,这归功于此线程:简短回答,不,您不能依赖MIME类型。类型和文件扩展名都由客户端提供
看起来您可以使用getimagesize()来验证图像,这归功于此线程:简短回答,不,您不能依赖MIME类型。类型和文件扩展名都由客户端提供
看起来您可以使用getimagesize()来验证图像,这归功于此线程:简短回答,不,您不能依赖MIME类型。类型和文件扩展名都由客户端提供 看起来您可以使用getimagesize()验证图像,这归功于此线程:
imagecreatefrom*()
函数。如果它不是扩展/MIME类型指定类型的图像,则函数将返回false
imagecreatefrom*()
函数。如果它不是扩展/MIME类型指定类型的图像,则函数将返回false
imagecreatefrom*()
函数。如果它不是扩展/MIME类型指定类型的图像,则函数将返回false
imagecreatefrom*()
函数。如果它不是扩展/MIME类型指定类型的图像,则函数将返回false
你将如何处理这些图像?在浏览器中显示它们?任何像样的浏览器都应该防止图像中的恶意代码,所以我认为你不必担心。如果您真的担心,可以结合使用getimagesize()并查看如何使用ClamAV扩展名/程序扫描文件以查找恶意代码。没有什么是完美的。你将如何处理这些图像?在浏览器中显示它们?任何像样的浏览器都应该防止图像中的恶意代码,所以我认为你不必担心。如果您真的担心,可以结合使用getimagesize()并查看如何使用ClamAV扩展名/程序扫描文件以查找恶意代码。没有什么是完美的。你将如何处理这些图像?在浏览器中显示它们?任何像样的浏览器都应该防止图像中的恶意代码,所以我认为你不必担心。如果您真的担心,可以结合使用getimagesize()并查看如何使用ClamAV扩展名/程序扫描文件以查找恶意代码。没有什么是完美的。你将如何处理这些图像?在浏览器中显示它们?任何像样的浏览器都应该防止图像中的恶意代码,所以我认为你不必担心。如果您真的担心,可以结合使用getimagesize()并查看如何使用ClamAV扩展名/程序扫描文件以查找恶意代码。但没有什么是完美的。