相关疑难解决方法(0)

PHP图像上传安全检查列表

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

  • 使用.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' …
Run Code Online (Sandbox Code Playgroud)

php security upload

61
推荐指数
6
解决办法
5万
查看次数

PHP图像上传安全方法

我开发了一个PHP脚本来替换当前的脚本,这将有很多曝光于各个市场/国家.其他人之间的脚本提供照片上传功能.

经过大量关于这个问题的阅读,我按照下面描述的方法.我非常感谢您对其安全性的评论.

  1. 照片将上传到Web根目录外的私有777文件夹中.
  2. 执行对白名单扩展的检查(仅允许jpgs,gif,png),其他所有内容都将被删除.
  3. 使用getimagesize检查最小 - 最大尺寸和照片有效性.
  4. 检查mimetype和文件扩展名匹配.
  5. 将上传的照片大小调整为标准尺寸(使用imagecopyresampled).
  6. 将创建的文件保存为jpg.
  7. 删除原始文件.
  8. 使用新的(非随机名称)即img51244.jpg保存照片.
  9. 根据不可预测的算法将新照片移动到公用文件夹的变量子目录(777权限).即,img10000.jpg将储存在photos/a/f/0/img10000.jpg同时img10001.jpg将储存在photos/0/9/3/img10001.jpg.这是出于其他原因(使用子域进行静态内容服务或使用CDN).

该脚本将在Linux专用服务器上运行.

php security file-upload

12
推荐指数
1
解决办法
1620
查看次数

用PHP保护用户图像上传功能

我正在为我的网站实现基于用户的图像上传工具.系统应允许任何用户仅上传JPEG和PNG文件.当然,我担心安全问题,所以我想知道许多比我更聪明的人对以下允许上传的检查感觉如何:

1)首先列出PHP中允许的文件扩展名,仅允许PNG,png,jpg,JPG和JPEG.通过以下功能检索用户文件的扩展名:

return end(explode(".", $filename));
Run Code Online (Sandbox Code Playgroud)

这应该有助于禁止用户上传恶意内容,例如.png.php.如果通过,请转到步骤2.

2)在TMP文件上运行php函数getimageize().通过类似的东西:

getimagesize($_FILES['userfile']['tmp_name']);
Run Code Online (Sandbox Code Playgroud)

如果这不返回false,请继续.

3)确保.htaccess文件放在uploads目录中,以便该目录中的任何文件都无法解析PHP文件:

php_admin_value engine Off
Run Code Online (Sandbox Code Playgroud)

4)将用户的文件重命名为预先确定的内容.IE

$filename = 'some_pre_determined_unique_value' . $the_file_extension;
Run Code Online (Sandbox Code Playgroud)

这也有助于防止SQL注入,因为文件名将是所使用的任何查询中唯一的用户确定的变量.

如果我执行上述操作,我仍然容易受到攻击吗?在接受文件之前,我希望有1)只允许jpgs和png,2)验证PHP说它是有效图像,3)禁用图像所在的目录执行.php文件和4)将用户文件重命名为某些内容独特.

谢谢,

php security upload file-upload image

10
推荐指数
1
解决办法
4922
查看次数

在PHP中检测SVG图像

使用PHP,我想检查上传的图像是jpg,gif,png还是svg格式.我发现exif_imagetype函数可以检查文件格式,但它不支持svg格式.有没有办法在PHP中检测svg格式?

php svg image

2
推荐指数
4
解决办法
4564
查看次数

PHP中的文件上传问题

嗨,我正在尝试使用PHP脚本上传图像.什么是非常奇怪的是我只在Internet Explorer中得到以下错误,其他地方的脚本工作正常:

Warning: move_uploaded_file(pictures/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/tntauto1/public_html/admin_add1.php on line 59

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpcJnHZE' to 'pictures/' in /home/tntauto1/public_html/admin_add1.php on line 59

Warning: copy() [function.copy]: The first argument to copy() function cannot be a directory in /home/tntauto1/public_html/admin_add1.php on line 60
Run Code Online (Sandbox Code Playgroud)

这是脚本:

if(is_uploaded_file($_FILES['image']['tmp_name'])){
    if($_FILES['image']['type'] == 'image/jpeg'){
        $original = 'original_'.$v_id.'.jpg';
        $large = 'large_'.$v_id.'.jpg';
        $small = 'small_'.$v_id.'.jpg';

    }elseif($_FILES['image']['type'] == 'image/gif'){
        $original = 'original_'.$v_id.'.gif';
        $large = 'large_'.$v_id.'.gif';
        $small = 'small_'.$v_id.'.gif';
    }else{
        $error = 'Error: The …
Run Code Online (Sandbox Code Playgroud)

php file-upload

1
推荐指数
1
解决办法
2847
查看次数

标签 统计

php ×5

file-upload ×3

security ×3

image ×2

upload ×2

svg ×1