我正在为我的 PHP Web 应用程序编写安装程序。它要求用户将一些文件和目录(config.php、缓存、上传、.htaccess)的权限更改为 777(以便可写)。我在许多应用程序中都看到安装程序要求用户将权限(对于 config.php 等)恢复回 644。
为什么它如此重要?为什么我不能只保留 777?我猜这是出于某种安全考虑,但如果我将这些文件保留为可写状态,究竟会发生什么?
答案1
PHP 脚本在 Web 服务器上运行。保留权限将使您的 Web 服务器用户(www-data
或apache
)能够在这些文件上写入。如果您的脚本存在一些错误或漏洞,这些权限将允许 Web 服务器(以及外部代理)更改文件和文件系统的内容。可能发生的情况:
- 丢失所有内容(写权限也是删除文件的权限);
- 添加不需要的内容:某些攻击旨在向您的网站添加数据,例如恶意脚本、虚假页面或用于网络钓鱼和垃圾邮件的脚本。由于您的网络服务器可以将文件写入文件系统,因此可以将数据上传到具有权限的任何地方。
所以,是的,保留这种权限真是一个糟糕的主意。
答案2
777 尤其糟糕。这意味着任何人都可以删除文件,也可以创建文件。我创建一个文件,你删除该文件。
如果你必须使用 777,然后使用 1777 - 这告诉操作系统只允许文件的所有者删除它。
否则,它就正如 coredump 所说的那样 - 脚本中有一个错误,它允许我写出新文件或覆盖现有文件,从而允许我对您的 Web 服务器执行任何我想做的事情,因为我以 apache / nobody / www-data 的形式覆盖/创建文件,然后 Web 服务器将提供我的恶意内容而不是原始内容。
理想情况下,Web 服务器进程不能写入它读取的目录,以避免此类问题。
答案3
任何有权访问该目录(例如通过 ftp)的人都可以读取、写入和执行它们。作为开发人员,您必须了解使用意图场景并关闭潜在的安全漏洞......
答案4
该服务器/工作站中的其他用户可以修改该文件。例如,使用桌面版 Ubuntu,创建 /home 777,任何用户都可以删除或修改它。
当您使用共享主机时,777 尤其存在安全风险。