标准的 chmod 权限是文件的“644”和目录的“755”,不是吗?
在大多数情况下,PHP 不需要写入文件或目录。那么我不能从所有组中获取写权限吗?
我可以将“444”分配给所有文件,将“555”分配给所有目录。
那不是更安全吗?
提前致谢!
注意:chmod()
在我的 PHPdisable_functions
列表中。
新创建的文件和目录的默认权限由umask环境变量设置。文件的所有者和 root 可以更改权限。
如果您不需要在应用程序中使用 chmod,请将其保留在禁用列表中。他们看待安全性的方式是:许多比我更聪明的人现在使 chmod 成为我的应用程序中更安全的部分之一。因此,我将花费我的空闲时间来确保其他部分的安全。
如果您将其自动化,则可以在服务器上将您的应用程序设为只读。但是,当您对应用程序代码进行更改时,这会让您感到非常困难。在某些时候,您将来回进行一些代码更改并在服务器上对其进行测试......然后忘记将您的文件/目录权限重置为只读。
如果您的生产机器上只有 1 个用户帐户,我会坚持使用默认权限 - 事情可能会为您管理。或者您可以删除组和“其他”权限,如下所述。
典型的生产设置是拥有您所属的应用程序组。您还需要一个单独的用户来运行您的 php 应用程序。保留所有者和组的完全权限,并删除“其他”的所有权限。这边走:
我猜管理你的生产服务器是别人的工作?他们会花时间确保没有人可以登录和四处闲逛。虽然您确实需要确保没有人可以运行操作系统命令,但我认为最好的起点是了解xss。默认的php服务器设置应该没问题。应用程序中最不安全的部分,是只有你见过的部分。如果有人要访问系统调用,很可能是通过表单。即使您消除了系统调用,表单仍然容易存储 javascript。除非您在应用程序中存储信用卡,否则更有可能的目标是用户浏览器中的密码/会话。
这不是更安全,因为 PHP 总是可以 chmod 777 即使在 000-chmoded 文件上(如果它们归 PHP 所有)。但是,它更安全,因为您不能在没有之前 chmod 的情况下编写此文件。
对不起我的英语不好。
我在想三个可能的原因。
chmod()
在我的 PHPdisable_functions
列表中。
那不是更安全吗?
使用disable_functions
可以禁用特定功能。
如果chmod()
出现在disable_functions
指令中,使用起来并不安全;它只是被禁用,并且正在使用的 PHP 代码chmod()
将引发警告。
该指令disable_functions
不应与安全模式指令混淆。disable_functions
即使指令safe_mode
设置为 0 也处于活动状态;safe_mode
启用时,某些功能将被禁用或受到限制。
注意安全模式在 PHP 5.3 中被认为已弃用;这意味着该指令在 PHP 5.3 中仍然被接受,但在任何时候都不能再使用它。