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