首页 >后端开发 >php教程 >如何创建安全的图像上传脚本?

如何创建安全的图像上传脚本?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-08 17:39:12517浏览

How Can I Create a Secure Image Upload Script?

完整的安全图像上传脚本

简介

确保安全的图像上传对于保护您的服务器和数据至关重要。该脚本概述了实现最大图像上传安全性的综合方法。

第 1 步:文件类型验证

HTML 表单:

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image">
    <input type="submit" name="upload" value="Upload">
</form>

PHP:

$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($_FILES['image']['type'], $allowedTypes)) {
    echo "Invalid file type";
    exit;
}

第 2 步:图像使用 GD 库进行内容验证

$verifyimg = getimagesize($_FILES['image']['tmp_name']);
if ($verifyimg['mime'] != $_FILES['image']['type']) {
    echo "Invalid image content";
    exit;
}

步骤 3:受限上传目录

将上传的图像存储在可访问的文档根目录之外或受保护的目录中:

/uploads

步骤4:对访客隐藏文件信息

上传图片重命名、更改扩展名,并存储原始信息在数据库中:

PHP:

$uploadfile = tempnam_sfx($uploaddir, ".tmp");
if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
    // Database logic to store original name and MIME type
}

第 5 步:安全图像检索

PHP:

$id = 1; // For example
$sql = "SELECT name, original_name, mime_type FROM uploads WHERE>

第 6 步:附加功能

最大文件大小验证:

if ($_FILES['image']['size'] > 1000000) {
    echo "File size too large";
    exit;
}

ImageUpload 类:

我创建了一个 ImageUpload 类来简化上传过程。下载软件包并按照 README 中的说明进行操作。

开源可用性:

ImageUpload 类现已在 GitHub 上提供,以供社区贡献和改进。

以上是如何创建安全的图像上传脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn