gpt4 book ai didi

php - 安全文件上传并验证它

转载 作者:可可西里 更新时间:2023-10-31 23:34:18 24 4
gpt4 key购买 nike

我收到视频上传和图片上传:

我的环境:LAMP

编辑:我将允许远程上传和POST视频上传

EDIT2:我得到的文件将被重命名,我不会存储原始文件名。

  1. 首先,我使用 $_FILES 检查 mime 类型。

  2. 然后我再次检查 finfo_file(如果函数存在)mimetype(PHP 5.3) 或使用 shell 命令文件。

  3. 如果通过上述检查,文件将被移动到公共(public)目录。

我的问题是这个设置安全吗?或者我可以改进什么吗?我昨天读了 hole day 这对我来说似乎已经足够了,但谁知道 :)

在编码和安全方面我是新手 :-)

最佳答案

我还可以推荐以下内容:

  1. is_uploaded_file 如果以 filename 命名的文件是通过 HTTP POST 上传的,则返回 TRUE。这有助于确保恶意用户没有试图诱使脚本处理它不应该处理的文件——例如,/etc/passwd。如果有任何文件,这种检查尤其重要对上传文件所做的任何操作都有可能向用户甚至同一系统上的其他用户泄露其内容。

  2. basename() 函数只获取文件名,例如 basename(c:/fakepath/something.avi);//将返回 something.avi,因为有些人试图通过提供类似目录的文件名来欺骗计算机。

关于 basename() 的更多信息:

当您上传文件时,您想将文件移动到您想要的目录,例如 /uploads/ 文件夹下,但是恶意用户可以将文件命名为 something/hello.jpg 然后当您使用 move_uploaded_file($source,$destionation) 移动文件时,您的 $destination 将是 /uploads/something/hello.jpg 这会导致问题。为确保您只获得正确的文件名,您需要使用返回 hello.jpg 等的 basename() 函数。

$file_name = basename($_FILES["upload_ctrl"]["name"]);
if(!move_uploaded_file($_FILES["upload_ctrl"]["tmp_name"],"uploads/".$file_name))
echo "Opps I cannot upload the file";

有关basename 的用法,请访问此处:http://php.net/manual/en/function.basename.php

关于php - 安全文件上传并验证它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640778/

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