Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP创建文件夹、上传文件和允许删除文件的最佳安全措施_Php - Fatal编程技术网

PHP创建文件夹、上传文件和允许删除文件的最佳安全措施

PHP创建文件夹、上传文件和允许删除文件的最佳安全措施,php,Php,我正在开发一个允许用户上传图像的应用程序。脚本创建多个大小的图像,并将其存储在具有会话ID的文件夹中,例如/uploads/skj28cnkjck783wo/thumbnails,然后在用户点击submit/next/go时将文件夹重命名为唯一名称 我需要允许用户能够删除单个文件,但不知道这样做的最佳安全方式是什么。如果我将删除基于会话ID,那么用户肯定能够更改它并删除不属于他们的文件 我想我可以将用户信息和对象引用存储在一个表中,并进行查找,以确保用户有权删除该文件,或将文件存储在一个文件夹中

我正在开发一个允许用户上传图像的应用程序。脚本创建多个大小的图像,并将其存储在具有会话ID的文件夹中,例如/uploads/skj28cnkjck783wo/thumbnails,然后在用户点击submit/next/go时将文件夹重命名为唯一名称

我需要允许用户能够删除单个文件,但不知道这样做的最佳安全方式是什么。如果我将删除基于会话ID,那么用户肯定能够更改它并删除不属于他们的文件

我想我可以将用户信息和对象引用存储在一个表中,并进行查找,以确保用户有权删除该文件,或将文件存储在一个文件夹中,该文件夹的用户ID根据DB条目是唯一的,但不知道专家们怎么想。我做了一些谷歌搜索,但都有缺陷

我正在运行IIS7作为web服务器


谢谢

尝试在单独的表中存储关系“userName(或userID)”->“UserFile”。这是最好的安全方式,因为操作系统(在您的情况下是Windows)只能检测到web服务的一个用户所有者(IIS或Apache等)。

尝试在单独的表中存储关系“userName(或userID)”->“UserFile”。这是最好的安全方式,因为操作系统(在您的情况下是Windows)只能检测到web服务的一个用户所有者(IIS或Apache等)。

操作文件的是您,而不是用户本人

用户在GET或POST请求中提供文件名(或者某些文件id)

  • 通过拒绝包含斜杠的所有输入来禁止相对路径。如果不允许使用子文件夹,这很容易
  • 如果允许子文件夹,则拒绝所有包含../etc的子文件夹
  • 您可以通过更改文件名(就像flickr一样)以及保留文件名(向用户显示)和所有者的数据来保存文件。如果所有者和用户不匹配,则拒绝

  • 操纵文件的是您,而不是用户本人

    用户在GET或POST请求中提供文件名(或者某些文件id)

  • 通过拒绝包含斜杠的所有输入来禁止相对路径。如果不允许使用子文件夹,这很容易
  • 如果允许子文件夹,则拒绝所有包含../etc的子文件夹
  • 您可以通过更改文件名(就像flickr一样)以及保留文件名(向用户显示)和所有者的数据来保存文件。如果所有者和用户不匹配,则拒绝

  • 用户是否通过ftp上传文件?他如何访问其他用户的文件?通过PHP表单上传。页面输出用户目录中的文件,每个文件都有一个删除按钮。“删除”按钮向服务器提交删除所选文件的请求。我想用户可以通过在提交到服务器之前更改值来处理这个问题。您不必允许他访问其他文件夹,只需在删除之前检查他的输入即可。它不能包含斜杠。用户是否通过ftp上传文件?他如何访问其他用户的文件?通过PHP表单上传。页面输出用户目录中的文件,每个文件都有一个删除按钮。“删除”按钮向服务器提交删除所选文件的请求。我想用户可以通过在提交到服务器之前更改值来处理这个问题。您不必允许他访问其他文件夹,只需在删除之前检查他的输入即可。它不能包含斜杠。我希望我可以设置上传文件的用户权限,但你是对的,不能在windows上这样做。对所有脚本来说,最好的安全方法是创建用户和用户权限表。尝试将所有用户权限存储在高级结构中。这对于所有操作系统(Windows、Linux、ets)来说都是正确的方法。我希望我可以为上传的文件设置用户权限,但你是对的,不能在Windows上这样做。对于所有脚本来说,最好的安全方法是创建用户和用户权限表。尝试将所有用户权限存储在高级结构中。这是适用于所有操作系统(Windows、Linux等)的正确方法