- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开发了一个下载/上传管理器脚本。
当我通过POST方法上传文件时,该文件存储在名为files的文件夹中,files文件夹位于另一个名为download-manager的文件夹中。
现在看来,当我通过POST方法上传时,我想重命名,删除文件时可以使用0666 CHMOD,但是要使其正常工作,download-manager文件夹和files文件夹需要为0777 CHMOD。现在有人可以告诉我这是否危险?
1)我拒绝所有.htaccess文件,因此没有人可以通过浏览器访问文件目录
2)上载脚本受用户名和密码保护,使用该脚本的人将明显更改,因此只有管理员才能基本上载,重命名,编辑,删除MySQL数据库中的文件和记录。
上载文件时,一条记录会添加到数据库中,并提供诸如文件类型,文件名,文件大小等信息,然后将唯一ID(由MySQL自动递增)附加到process.php文件中,该文件将从目录中获取文件和未显示的mime类型等,process.php基本上会进行检查以查看记录和文件是否存在,如果存在则强制下载该文件。
基本上,下载URL类似于:wwww.mydomain.com/process.php?file=57,显然要进行检查以确保ID存在于数据库中,并且存在一个文件名与该文件名一起存储在数据库中的文件。 ID。
现在,当使用POST方法通过表单上传文件时,所有这些方法都可以正常工作,但我还添加了手动上传功能,因此对于想要上传大于其网络主机大小的文件的用户,他们可以简单地通过FTP程序上传文件例如,然后只需通过管理区域中的表单手动添加文件名和文件详细信息即可将记录与文件链接。问题是权限问题,因为如果文件是通过FTP上传的,或者他们通过php脚本上传文件的方式无法重命名,则将来需要时可以删除文件,因为php脚本没有正确的权限。因此,根据我的收集,唯一的选择就是告诉使用脚本的人将文件chmod更改为0777,以使其正常工作,我认为这样会使它正常工作吗?
但是然后我还有0777也可以执行的问题。该脚本允许任何文件类型的上传,因为它是一个下载/上传管理器脚本,但是与此同时,我对所有这些权限困扰以及我应该实际执行的操作感到有些困惑。由于php受主机设置的最大上传大小限制,因此我想添加手动上传,因此用户可以通过另一种方法上传文件并将文件分配给数据库记录,但是如上所述,要重命名,删除时遇到问题通过php脚本文件。
我已经开发了脚本来检测此类问题并通知用户等,但我想尝试使此脚本完成所有工作或几乎所有工作,而无需在手册中指出管理员必须chmod文件到0777时,他们希望脚本重命名,然后删除文件,尽管我不知道将chmodding文件到0777是否实际上允许将php脚本重命名,删除等,但是安全性也是一个问题。
更新
好的,谢谢,在将文件切入上载之前对文件进行了整理?
我是否只在文件周围使用chown(),而没有其他任何东西,它将使它由服务器进程拥有并使其私有?如我所见
chown apache:apache '/path/to/files' ;
我是否需要添加apache:apache位?
我确实认为这是一个更简单的解决方案,如果管理员进行手动上传告诉他们他们将来必须根据需要手动重命名/删除文件,因为脚本没有正确的权限,那么这样做使其成为一个简单的解决方案,因为manualupload脚本可以仅重命名db记录以使其保持与文件的链接。这样就不用担心文件权限问题。
只需将用户通过ftp手动将文件更改(例如,从myfile.zip更改为somefile.zip),然后他们编辑该文件的db记录,然后将文件名从旧文件名myfile.zip更改为somefile.zip,这样就可以链接所有文件,但不用担心权限问题。正如我一直在阅读的那样,chown()并不总是有效,或者由于任何原因都不能被依赖。
最佳答案
1)我拒绝所有.htaccess文件,因此没有人可以通过浏览器访问文件目录
将文件存储在一个单独的文件夹中,该目录应远离包含PHP文件的目录结构。
就目录的权限而言,有三种方法可以设置文件夹的权限:
使其可写(chmod 0777 '/path/to/files/'
)
不建议这样做,因为它对安全性有重大影响,尤其是在非专用服务器上。具有帐户或可以告诉服务器上的进程将其写入/删除到该文件夹的任何人都可以更改其内容。
设为临时(chmod 1777 '/path/to/files/'
)
这也带来了安全方面的问题,但由于以下原因,它的影响要小于选项1:用户无法修改目录-只能修改其拥有的文件。
使它归服务器进程所有并使其私有(chown apache:apache '/path/to/files' ; chmod 0700 '/path/to/files'
)
可以说这是最好的解决方案。
关于mysql - 正确的PHP文件上传权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642241/
今天我在一个 Java 应用程序中看到了几种不同的加载文件的方法。 文件:/ 文件:// 文件:/// 这三个 URL 开头有什么区别?使用它们的首选方式是什么? 非常感谢 斯特凡 最佳答案 file
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我有一个 javascript 文件,并且在该方法中有一个“测试”方法,我喜欢调用 C# 函数。 c# 函数与 javascript 文件不在同一文件中。 它位于 .cs 文件中。那么我该如何管理 j
需要检查我使用的文件/目录的权限 //filePath = path of file/directory access denied by user ( in windows ) File fil
我在一个目录中有很多 java 文件,我想在我的 Intellij 项目中使用它。但是我不想每次开始一个新项目时都将 java 文件复制到我的项目中。 我知道我可以在 Visual Studio 和
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我有 3 个组件的 Twig 文件: 文件 1: {# content-here #} 文件 2: {{ title-here }} {# content-here #}
我得到了 mod_ldap.c 和 mod_authnz_ldap.c 文件。我需要使用 Linux 命令的 mod_ldap.so 和 mod_authnz_ldap.so 文件。 最佳答案 从 c
我想使用PIE在我的项目中使用 IE7。 但是我不明白的是,我只能在网络服务器上使用 .htc 文件吗? 我可以在没有网络服务器的情况下通过浏览器加载的本地页面中使用它吗? 我在 PIE 的文档中看到
我在 CI 管道中考虑这一点,我应该首先构建和测试我的应用程序,结果应该是一个 docker 镜像。 我想知道使用构建环境在构建服务器上构建然后运行测试是否更常见。也许为此使用构建脚本。最后只需将 j
using namespace std; struct WebSites { string siteName; int rank; string getSiteName() {
我是 Linux 新手,目前正在尝试使用 ginkgo USB-CAN 接口(interface) 的 API 编程功能。为了使用 C++ 对 API 进行编程,他们提供了库文件,其中包含三个带有 .
我刚学C语言,在实现一个程序时遇到了问题将 test.txt 文件作为程序的输入。 test.txt 文件的内容是: 1 30 30 40 50 60 2 40 30 50 60 60 3 30 20
如何连接两个tcpdump文件,使一个流量在文件中出现一个接一个?具体来说,我想“乘以”一个 tcpdump 文件,这样所有的 session 将一个接一个地按顺序重复几次。 最佳答案 mergeca
我有一个名为 input.MP4 的文件,它已损坏。它来自闭路电视摄像机。我什么都试过了,ffmpeg , VLC 转换,没有运气。但是,我使用了 mediainfo和 exiftool并提取以下信息
我想做什么? 我想提取 ISO 文件并编辑其中的文件,然后将其重新打包回 ISO 文件。 (正如你已经读过的) 我为什么要这样做? 我想开始修改 PSP ISO,为此我必须使用游戏资源、 Assets
给定一个 gzip 文件 Z,如果我将其解压缩为 Z',有什么办法可以重新压缩它以恢复完全相同的 gzip 文件 Z?在粗略阅读了 DEFLATE 格式后,我猜不会,因为任何给定的文件都可能在 DEF
我必须从数据库向我的邮件 ID 发送一封带有附件的邮件。 EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Adventure Works Admin
我有一个大的 M4B 文件和一个 CUE 文件。我想将其拆分为多个 M4B 文件,或将其拆分为多个 MP3 文件(以前首选)。 我想在命令行中执行此操作(OS X,但如果需要可以使用 Linux),而
快速提问。我有一个没有实现文件的类的项目。 然后在 AppDelegate 我有: #import "AppDelegate.h" #import "SomeClass.h" @interface A
我是一名优秀的程序员,十分优秀!