Php 禁止上载哪种类型的文件

Php 禁止上载哪种类型的文件,php,file,upload,file-upload,Php,File,Upload,File Upload,我想在我的网站上放一个部分,人们可以上传东西,我想知道我应该禁止他们上传哪种类型的文件。任何可能利用你的网站或应用程序的东西,这将是php文件(显然),任何种类的可执行文件,以及你不想承担托管责任的非法东西 我将实现一个文件扩展名白名单,你想让人们上传和检查的基础上,他们的Mime类型和文件扩展名,并写一个政策,哪些文件可以和不能上传到你的网站 我还会在文件中存储IP地址和其他相关数据,以防您需要阻止他人使用或滥用您的系统。这需要做很多工作,但是让用户上传文件到你的网站并不是一件容易的事情。任何

我想在我的网站上放一个部分,人们可以上传东西,我想知道我应该禁止他们上传哪种类型的文件。

任何可能利用你的网站或应用程序的东西,这将是php文件(显然),任何种类的可执行文件,以及你不想承担托管责任的非法东西

我将实现一个文件扩展名白名单,你想让人们上传和检查的基础上,他们的Mime类型和文件扩展名,并写一个政策,哪些文件可以和不能上传到你的网站


我还会在文件中存储IP地址和其他相关数据,以防您需要阻止他人使用或滥用您的系统。这需要做很多工作,但是让用户上传文件到你的网站并不是一件容易的事情。

任何可能利用你的网站或应用程序的东西,都是php文件(显然),任何类型的可执行文件,以及你不想承担托管责任的非法东西

我将实现一个文件扩展名白名单,你想让人们上传和检查的基础上,他们的Mime类型和文件扩展名,并写一个政策,哪些文件可以和不能上传到你的网站


我还会在文件中存储IP地址和其他相关数据,以防您需要阻止他人使用或滥用您的系统。这是一项艰巨的工作,但让用户上传文件到您的网站并非易事。

您不能问什么类型的文件是禁止的(黑名单),但什么类型的文件是允许的(白名单)

因此,写下你希望用户上传的文件,并确保你的应用程序检查这些文件是否为允许的格式

您的列表主要不应包括:

  • PHP文件或任何其他脚本语言文件
  • 可执行文件

你不能问什么类型的文件是禁止的(黑名单),但什么类型的文件是允许的(白名单)

因此,写下你希望用户上传的文件,并确保你的应用程序检查这些文件是否为允许的格式

您的列表主要不应包括:

  • PHP文件或任何其他脚本语言文件
  • 可执行文件

这实际上取决于您将如何处理这些文件。如果你只存储它们,理论上你甚至可以接受世界上最糟糕的计算机病毒的集合——只要这些文件不被执行

正如rogeriopvl所建议的,最好创建一个您希望允许的文件类型的白名单

切勿依赖浏览器发送的MIME类型。始终自己检查文件类型,例如,如果只允许使用图像,请使用


可以找到关于这个问题的非常好(但很长)的讨论。

这实际上取决于您将如何处理这些文件。如果你只存储它们,理论上你甚至可以接受世界上最糟糕的计算机病毒的集合——只要这些文件不被执行

正如rogeriopvl所建议的,最好创建一个您希望允许的文件类型的白名单

切勿依赖浏览器发送的MIME类型。始终自己检查文件类型,例如,如果只允许使用图像,请使用


可以找到关于这个问题的非常好(但很长)的讨论。

检查上传文件的扩展名甚至不是问题的一半。有文件名语法问题、类型嗅探问题、脚本/插件来源问题以及更多需要担心的问题

制作一个不会影响应用程序的文件存储桶是很难的,不能轻率地进行。作为一个起点,考虑将文件从不同的[SU]域服务到文件管理应用程序,并且不要使用用户提交的文件名作为服务器文件系统上文件名的基础。
(请阅读Pekka链接上的讨论。)

检查上传文件的扩展名甚至不是问题的一半。有文件名语法问题、类型嗅探问题、脚本/插件来源问题以及更多需要担心的问题

制作一个不会影响应用程序的文件存储桶是很难的,不能轻率地进行。作为一个起点,考虑将文件从不同的[SU]域服务到文件管理应用程序,并且不要使用用户提交的文件名作为服务器文件系统上文件名的基础。
(请阅读Pekka链接上的讨论。)

这取决于您希望提供的服务。从一种文件类型到每种文件类型,这一切都是可能的。dropbox.com显然可以让你上传任何东西。你如何确定文件的“类型”?基于不受信任的远程用户对文件的名称?这个问题适用于文件的白色和黑色列表。主持人:“好吧,鲍勃,20000美元。当用户在上面的帖子中使用“东西”这个词时,他指的是什么?是a)甜甜圈,b)文件,还是c)纸质文档”。鲍勃:“嗯,我不知道,但我要猜一个)甜甜圈”主持人:“对不起,鲍勃,这是错误的答案”;这取决于你想提供什么样的服务。从一种文件类型到每种文件类型,这一切都是可能的。dropbox.com显然可以让你上传任何东西。你如何确定文件的“类型”?基于不受信任的远程用户对文件的名称?这个问题适用于文件的白色和黑色列表。主持人:“好吧,鲍勃,20000美元。当用户在上面的帖子中使用“东西”这个词时,他指的是什么?是a)甜甜圈,b)文件,还是c)纸质文档”。鲍勃:“嗯,我不知道,但我要猜一个)甜甜圈”主持人:“对不起,鲍勃,这是错误的答案”;观众叹气