5

标准的 chmod 权限是文件的“644”和目录的“755”,不是吗?

在大多数情况下,PHP 不需要写入文件或目录。那么我不能从所有组中获取写权限吗?

我可以将“444”分配给所有文件,将“555”分配给所有目录。

那不是更安全吗?

提前致谢!

注意:chmod()在我的 PHPdisable_functions列表中。

4

4 回答 4

3

新创建的文件和目录的默认权限由umask环境变量设置。文件的所有者和 root 可以更改权限。

如果您不需要在应用程序中使用 chmod,请将其保留在禁用列表中。他们看待安全性的方式是:许多比我更聪明的人现在使 chmod 成为我的应用程序中更安全的部分之一。因此,我将花费我的空闲时间来确保其他部分的安全。

如果您将其自动化,则可以在服务器上将您的应用程序设为只读。但是,当您对应用程序代码进行更改时,这会让您感到非常困难。在某些时候,您将来回进行一些代码更改并在服务器上对其进行测试......然后忘记将您的文件/目录权限重置为只读。

如果您的生产机器上只有 1 个用户帐户,我会坚持使用默认权限 - 事情可能会为您管理。或者您可以删除组和“其他”权限,如下所述。

典型的生产设置是拥有您所属的应用程序组。您还需要一个单独的用户来运行您的 php 应用程序。保留所有者和组的完全权限,并删除“其他”的所有权限。这边走:

  • 开发人员保留他们的个人登录信息 - 您可以跟踪谁在什么时候做了什么。
  • 您和其他开发人员可以将新代码复制到服务器。
  • 应用程序可以运行代码。
  • 应用程序无法访问代码之外的任何内容。
  • 其他用户无法看到您的代码。

我猜管理你的生产服务器是别人的工作?他们会花时间确保没有人可以登录和四处闲逛。虽然您确实需要确保没有人可以运行操作系统命令,但我认为最好的起点是了解xss。默认的php服务器设置应该没问题。应用程序中最不安全的部分,是只有你见过的部分。如果有人要访问系统调用,很可能是通过表单。即使您消除了系统调用,表单仍然容易存储 javascript。除非您在应用程序中存储信用卡,否则更有可能的目标是用户浏览器中的密码/会话。

于 2010-08-26T14:27:28.970 回答
1

这不是更安全,因为 PHP 总是可以 chmod 777 即使在 000-chmoded 文件上(如果它们归 PHP 所有)。但是,它更安全,因为您不能在没有之前 chmod 的情况下编写此文件。

于 2010-08-05T09:29:53.513 回答
1

对不起我的英语不好。

我在想三个可能的原因。

  1. 检查php.ini 中的safe_mod标志,如果 safe_mod 为ON ,则该功能可能会出现问题。
  2. 如果您有 plesk,如果您使用其他用户创建文件夹或文件,而该用户尚未使用 plesk 创建,则会遇到问题。
  3. 您可能缺少一个 php 库。
于 2010-08-31T20:13:52.693 回答
0

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 中仍然被接受,但在任何时候都不能再使用它。

于 2010-08-26T13:29:10.730 回答