如何允许PHP在不影响服务器安全性的情况下写入文件

H. *_*nce 5 php apache permissions fwrite file-ownership

每当我想让PHP脚本将输出写入服务器上的文件时,我经常会遇到负面评论.

我用的fopen(),fwrite()fclose()功能.

我知道如何实现这一目标的唯一方法是将输出文件的权限设置为0666,或者让它由"nobody"拥有(这是PHP在我们的Apache Web服务器上运行的用户).

因此,如果"0666"或"无人拥有"是安全风险,那么如何成功安全地允许PHP脚本写入文件?

感谢您就此主题分享指导.

Dua*_*ran 3

如果您需要在上传后从 PHP 访问文件,那么需要使用允许 Web 服务器(在本例中为 apache)访问它们的权限来存储它们。人们所说的风险是您网站上的某些脚本可能会被欺骗而提供该文件。这是一种假设的风险,但许多内容管理系统都发生过这种风险。为了减轻这种风险:

  1. 使文件名和路径不易被猜到。如果用户有一条路径,他们可以很容易地推断出也getfile.php?file=1.txt有一条路径。2.txt隐藏名称或使其不排序。
  2. 让任何提供文件的脚本确认登录用户、资源授权等信息,并从包含路径的文件名中删除任何内容,以避免恶意引用/etc/passwd等。

如果您只需要删除文件并且不再提供它或再次通过 PHP 访问它,您还有更多选择。使用chmodchown命令使其对 apache 用户来说不可读。如果您想更加偏执,可以使用 cron 脚本将文件(并重命名)移动到 PHP 源代码中未知的位置。至少,如果您的服务器被黑客攻击,入侵者无法直接进入该目录,但我们即将讨论转向操作系统安全性。