我正在测试我的php表单并将所有请求记录到一个单独的文件中。目的是查找表单是否被用于垃圾邮件,并希望消除它。
使用fwrite()
记录请求时,使用777权限是否危险或不必要?有什么替代方案?
您只需要该应用程序正在运行的用户具有写入文件的权限。管理员能够读取该文件有时也很方便。除此之外,没有人需要访问该文件。因此,0640
是这种文件最合理的权限。
特别地,没有人需要执行该文件,这是使用0777
设置的位之一。执行位仅对目录有用。(以及可执行程序,但这不适用于此处。)
0640 = user/owner read/write, group read only, other no access
0777 = user/owner read/write/execute, group read/write/execute, other read/write/execute
umask
是一个非常有用的工具,可以帮助您设置正确的权限。您可以使用umask
来设置权限模板,而不是创建具有明确权限的文件。由于目录需要可执行权限而文件不需要,umask
将更加合理地掩盖不同类型文件的权限,而不是显式设置它们。例如,在您的情况下:
umask(027); // Owner permissions unchanged, Group permissions mask 2, drop all other permissions
fopen('foo', 'w', 0777); // Creates file with *0640* permissions, because of mask
mkdir('bar', 0777); // Creates dir with *0750* permissions, because of mask
fwrite
的。现在你正在询问有关Webroot的一般性问题。我认为这应该作为一个单独的问题来提出。 - kojiro