php - php fileinfo 是否足以防止上传恶意文件?

标签 php security

我搜索了一下,并没有真正找到关于如何拥有安全文件上传功能的专业类型的响应。所以我想听听这个网站上一些专家的意见。我目前允许上传 mp3 和图像,虽然我非常有信心防止我网站上的 xss 和注入(inject)攻击,但我对文件上传安全性并不十分熟悉。我基本上只使用 php fileinfo 并根据文件类型检查一组接受的文件类型。对于图像,有 getimagesize 函数和一些额外的检查。至于存储它们,我的目录中只有一个文件夹,因为我希望用户能够使用这些文件。如果有人能给我一些提示,我将不胜感激。

最佳答案

我通常调用 ClamAV接受可以共享的文件时。使用 PHP,这很容易通过 php-clamav 完成。 .

您最不想做的事情之一就是在全局范围内传播恶意软件 :)

如果可以,请在文件上传后但公开之前在后台执行此操作。此类的一个怪癖是它可以将整个 ClamAV 病毒定义数据库加载到内存中,如果 PHP 通常在 Apache 下运行,这几乎肯定很糟糕(考虑顺序每个实例 +120 MB 的内存)。

使用类似于 beanstalkd 的东西扫描上传然后更新您的数据库以将其公开是解决此问题的一个很好的方法。


我提到这个只是因为其他答案没有,我绝不打算将其作为一个完整解决方案。请参阅此处发布的其他答案,这是您应该完成的步骤。永远,永远,永远清理你的输入,确保它是预期的类型,等等(我有没有提到你也应该阅读其他答案?)

关于php - php fileinfo 是否足以防止上传恶意文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561517/

相关文章:

java - 如何在 Java 中序列化和反序列化 RSA KeyPair

wordpress - 为什么 Wordpress 默认不允许 svg 图像文件?

asp.net-mvc - ASP.NET MVC 中的模拟

javascript - 获取 Session 值到 Javascript

android - 是否可以从 .apk 文件中获取 Android.mk 或 native 源文件?

iphone - 搜索硕士论文主题

PHP $_GET ['Variable' ] 在 $query 中回显但不求值

php -> fwrite 处理管道挂起 -> 为什么?

php - 无法将从数据库中检索到的信息插入到表单中

php - 为什么我的推特应用程序访问级别是只读的?我该如何改变呢?