在大多数情况下,PHP不需要写入文件或目录。那么我可以从所有组中删除写权限吗?
我可以将所有文件分配为“444”,将所有目录分配为“555”。
这样不是更安全吗?
提前感谢!
注意:我的PHP的“disable_functions”列表中有“chmod()”。
新创建的文件和目录的默认权限由umask环境变量设置。文件的所有者和root可以更改权限。
如果您的应用程序不需要使用chmod,则将其保留在禁用列表中。您应该考虑安全性:比我聪明的许多人现在已经使chmod成为我的应用程序中更安全的部分之一。因此,我将花费可用时间使其他部分更加安全。
在服务器上将应用程序设置为只读是可以自动化的。但是,当您更改应用程序代码时,这将使事情非常困难。在某些时候,您将来回移动,对服务器上进行一些代码更改并对其进行测试...然后忘记将文件/目录权限重置为只读。
如果您的生产机器上只有1个用户帐户,则我建议您坚持使用默认权限-可能已经为您管理了一切。或者,您可以按照下面的说明删除组和“其他”权限。
典型的生产设置是拥有一个应用程序组,您属于该组。您还需要一个单独的用户来运行php应用程序。保留所有者和组的完全权限,并从“其他”中删除所有权限。这样做的好处是:
我猜想管理生产服务器是其他人的工作?他们会花时间确保没有人可以登录并四处乱动。虽然您需要确保没有人可以运行操作系统命令,但我认为最好的起点是学习xss。默认的php服务器设置应该没问题。应用程序中最不安全的部分是只有您看过的部分。 如果有人要访问系统调用,最有可能是通过表单进行的。即使您消除了系统调用,表单仍然容易存储JavaScript。除非您的应用程序存储信用卡,否则更可能成为攻击目标的是用户浏览器中的密码/会话。
这并不更安全,因为PHP始终可以对000-chmod文件进行chmod 777(如果它们属于PHP)。 但是,由于您无法在chmod之前写入此文件,因此更安全。
chmod()
在我的PHP的disable_functions
列表中。
这样做会更安全吗?
使用disable_functions
可以禁用特定函数。
如果chmod()
出现在disable_functions
指令中,那么使用它并不更安全;它只是被禁用了,使用chmod()
的PHP代码将会引发警告。
指令disable_functions
不应与安全模式指令混淆。即使将指令safe_mode
设置为0,disable_functions
也是活动的;当启用safe_mode
时,某些函数将被禁用或受到限制。
chmod()
被列在disable_functions
指令中,他问:那不是更安全吗?我对此做出了回答。 - apaderno抱歉我的英文不好。
我想到了三个可能的原因: