【发布时间】:2012-03-04 22:11:54
【问题描述】:
每当我想让 PHP 脚本将输出写入服务器上的文件时,我经常会遇到否定的 cmets。
我使用fopen()、fwrite() 和fclose() 函数。
我知道如何做到这一点的唯一方法是将输出文件的权限设置为 0666 或将其归“nobody”所有(这是 PHP 在我们的 Apache Web 服务器上运行的用户)。
那么,如果“0666”或“由任何人拥有”是安全风险,您如何成功且安全地允许 PHP 脚本写入文件?
感谢您分享有关此主题的指导。
【问题讨论】:
-
请解释您如何通过允许您自己的脚本写入文件来“损害服务器安全”。写入数据库是否也存在安全风险?只要确保您的代码没有安全漏洞。只要事情做对了,就没有问题。
-
@Flukey ...这就是我提出问题的目的。我没有清楚地看到这个问题。但是每当我提到我在服务器上有一个 0666 文件或运行 PHP 的用户拥有的文件时,我都会收到类似于..."的警告 cmets,当然你知道你正在打开你的服务器以确保安全风险”。我只是想在不影响服务器安全的情况下编写有效的脚本。
-
只要写入的文件位于公共 Apache 目录之外,我就没有发现问题。他们的cmets是无知的。
-
(@Flukey) 啊哈....那么也许我们越来越接近问题的核心了。他们的 cmets 并非无知,因为该文件实际上位于公共 Apache 目录中。
-
因此,换句话说,如果文件为“nobody”所有,但位于公共 Apache 目录之外,则不存在安全问题——当然,前提是我的 PHP 脚本什么都不做在自身内部危及服务器安全?请原谅我可能会认为 SysAdmins 是一个愚蠢的问题,但我是开发人员而不是 SysAdmin(但我担心我的服务器的安全性)。
标签: php apache permissions fwrite file-ownership