gpt4 book ai didi

php - 保护 PHP 站点中的文件

转载 作者:搜寻专家 更新时间:2023-10-31 20:53:25 24 4
gpt4 key购买 nike

我有一个网站接受用户上传的文件(图片、pdf、word 文档等),然后允许其他用户下载它们。

我意识到这会带来安全风险,因为恶意用户可以上传伪装成有用文件的脚本等。

我的问题是——使用 PHP(mime_content_type 或 finfo)检查正在上传的文件的 mime 类型并将文件设置为只读(不可执行)是否足够,或者我还必须存储上传的文件在网络根目录之外的目录中?我认为这会消除上传文件的大部分风险,但我不确定。在这种情况下无法对上传的文件执行病毒扫描。

感谢输入。

最佳答案

一种常见的做法是在文档根目录之外上传文件,通常使用随机文件名,然后将其映射到数据库中正确的项目/对象/帖子。如果需要额外的权限来访问文件,请确保在允许下载之前检查它们,当然,您将只有经过身份验证的用户才能上传。

Fileinfo finfo_ 可用于验证大多数 mime 类型,至少可以验证名为“.txt”的文件实际上是文本文件而不是二进制 blob,或者“.jpg”确实出现成为基于其前几个或最后几个字节的 jpeg。它可能需要一些额外的工作来整理 MS Office mimetypes,好像我没记错的话,它们都是以 application-msword 的形式出现的。但是您随后可以使用文件扩展名来确定它真正应该是什么(xls、ppt、doc 等)。

然后一个 PHP 脚本提供下载的文件,而不是网络服务器直接提供它。因此,您应该将 MIME 类型与其一起存储,以便您可以提供适当的 header 。

header("Content-type: application-whatever");
header("Content-length: size-of-the-file-in-bytes");

关于php - 保护 PHP 站点中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5223033/

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