gpt4 book ai didi

PHP图片上传安全检查 list

转载 作者:IT老高 更新时间:2023-10-28 12:03:24 24 4
gpt4 key购买 nike

我正在编写一个脚本来将图像上传到我的应用程序。以下安全步骤是否足以使应用程序在脚本方面安全?

  • 使用 .httaccess 禁止 PHP 在上传文件夹中运行。
  • 如果文件名包含字符串“php”,则不允许上传。
  • 只允许扩展名:jpg、jpeg、gif 和 png。
  • 仅允许图像文件类型。
  • 禁止使用两种文件类型的图片。
  • 更改图片名称。
  • 上传到子目录而不是根目录。

这是我的脚本:

 $filename=$_FILES['my_files']['name'];
$filetype=$_FILES['my_files']['type'];
$filename = strtolower($filename);
$filetype = strtolower($filetype);

//check if contain php and kill it
$pos = strpos($filename,'php');
if(!($pos === false)) {
die('error');
}




//get the file ext

$file_ext = strrchr($filename, '.');


//check if its allowed or not
$whitelist = array(".jpg",".jpeg",".gif",".png");
if (!(in_array($file_ext, $whitelist))) {
die('not allowed extension,please upload images only');
}


//check upload type
$pos = strpos($filetype,'image');
if($pos === false) {
die('error 1');
}
$imageinfo = getimagesize($_FILES['my_files']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
die('error 2');
}
//check double file type (image with comment)
if(substr_count($filetype, '/')>1){
die('error 3')
}

// upload to upload direcory
$uploaddir = 'upload/'.date("Y-m-d").'/' ;

if (file_exists($uploaddir)) {
} else {
mkdir( $uploaddir, 0777);
}
//change the image name
$uploadfile = $uploaddir . md5(basename($_FILES['my_files']['name'])).$file_ext;



if (move_uploaded_file($_FILES['my_files']['tmp_name'], $uploadfile)) {
echo "<img id=\"upload_id\" src=\"".$uploadfile."\"><br />";
} else {
echo "error";
}

欢迎任何新的提示:)

最佳答案

使用 GD(或 Imagick)重新处理图像并保存处理后的图像。对于黑客来说,其他所有的只是 fun 无聊。

编辑:正如 rr 指出的那样,使用 move_uploaded_file() 进行任何上传。

后期编辑:顺便说一句,您希望对上传文件夹进行非常严格的限制。这些地方是许多漏洞发生的黑暗角落之一。这适用于任何类型的上传和任何编程语言/服务器。查看 https://www.owasp.org/index.php/Unrestricted_File_Upload

关于PHP图片上传安全检查 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4166762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com