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