为什么php上载的文件临时存储在临时目录中

为什么php上载的文件临时存储在临时目录中,php,Php,在我读过的所有教程中,首先提交文件上载表单,然后评估临时目录中的文件,以决定是否应将其移动到永久目录。。。我的问题是:这有什么意义 如果该文件是由攻击者上传的,并且是可执行文件,那么在对其进行评估和删除之前,它不会对系统造成伤害吗? 除此之外,用户是否必须等待文件上载,才能发现文件无法上载,因为它没有预期的格式 我想最好是使用某种客户端代码,但我在问,因为没有人把它作为一种选择 (如果最好使用客户端代码来评估文件,那么它是如何完成的?) 首先,请提前感谢(非常重要):始终在服务器端验证用户输入。

在我读过的所有教程中,首先提交文件上载表单,然后评估临时目录中的文件,以决定是否应将其移动到永久目录。。。我的问题是:这有什么意义

如果该文件是由攻击者上传的,并且是可执行文件,那么在对其进行评估和删除之前,它不会对系统造成伤害吗? 除此之外,用户是否必须等待文件上载,才能发现文件无法上载,因为它没有预期的格式

我想最好是使用某种客户端代码,但我在问,因为没有人把它作为一种选择

(如果最好使用客户端代码来评估文件,那么它是如何完成的?)

首先,请提前感谢(非常重要):始终在服务器端验证用户输入。但您仍然可以在客户端验证用户输入(出于可用性原因)

正如您已经假设的,这是出于安全原因

您不希望在“生产用户文件目录”中有不安全的文件(例如PHP代码或其他不好的东西),因为这可能会产生其他影响(例如可能已经影响正在显示的网站统计信息等)

因此,在您将上传的用户文件移动到正确的目录之前,您应该根据您的业务规则(例如,无可执行代码、最大文件大小等)确定该文件是正常的,然后再将其移动。此临时上载目录应始终为非公共目录(意味着web服务器无法访问它)。

首先(非常重要):始终在服务器端验证用户输入。但您仍然可以在客户端验证用户输入(出于可用性原因)

正如您已经假设的,这是出于安全原因

您不希望在“生产用户文件目录”中有不安全的文件(例如PHP代码或其他不好的东西),因为这可能会产生其他影响(例如可能已经影响正在显示的网站统计信息等)


因此,在您将上传的用户文件移动到正确的目录之前,您应该根据您的业务规则(例如,无可执行代码、最大文件大小等)确定该文件是正常的,然后再将其移动。此临时上载目录应始终为非公共目录(意味着web服务器无法访问它)。

这样做有几个原因

首先,它减少了被中断的上传被搁置的可能性(例如,如果服务器在上传文件时断电)

其次,它确保上传目录中的所有文件都是完整的。读取上载目录中的文件时,不会读取任何部分数据


最后,它允许将尚未验证的文件(例如,检查其文件类型)与已验证的文件分开。

这样做有几个原因

首先,它减少了被中断的上传被搁置的可能性(例如,如果服务器在上传文件时断电)

其次,它确保上传目录中的所有文件都是完整的。读取上载目录中的文件时,不会读取任何部分数据


最后,它允许将尚未验证的文件(例如,检查其文件类型)与已验证的文件分开。

确定这不是自动的。它可以通过执行一些PHP函数来完成,例如:
move\u uploaded\u file
我没有说它是自动的?你是说Javascript中的扩展过滤吗?然而,您应该在服务器端验证文件,尽管在客户端添加了验证代码,因为客户端检查可能会被Chrome的Inspector等工具失效。这不是自动的。它可以通过执行一些PHP函数来完成,例如:
move\u uploaded\u file
我没有说它是自动的?你是说Javascript中的扩展过滤吗?然而,您应该在服务器端验证文件,尽管在客户端添加了验证代码,因为客户端检查可能会被Chrome的Inspector等工具失效。