限制 PHP 脚本写入文件的范围

限制 PHP 脚本写入文件的范围

我正在编写一个 PHP 脚本,该脚本将向.htaccess文件添加 IP 地址块。我担心的是,我不想让.htaccessWeb 服务器用户打开该文件进行一般写入,因为这样对 Web 服务器的任何妥协都会允许他们向文件写入任何他们喜欢的内容.htaccess。所以我试图找到一种方法来限制 PHP 脚本只能以某种方式编写我希望它能够编写的内容。

我认为执行此操作的适当方法可能是在另一个位置(可能由 root 拥有)创建一个已suid在其上设置的脚本(我的 Web 分区不允许suid)。然后,我可以从我的 PHP 脚本调用该脚本,它只能执行该中间脚本的接口对其可用的操作,即获取将特定 IP 地址阻止代码写入文件所需的.htaccess参数,没有别的。

这听起来像是解决这个问题的最佳方法吗?有没有其他更好的方法,或者我缺少什么考虑?


元注释:我考虑过信息安全网站或 Stack Overflow 来回答这个问题。如果其中之一会更好,请告诉我。

答案1

让 PHP 脚本将 IP 地址写入数据库表。另外,cron定期执行不同的脚本(推荐?Python)来查询值并将它们写入文件.htaccess。然后您可以保持文件的权限.htaccess严格,例如0640, root:www-user.

我们在脚本上设置 SUID 位;但是,默认情况下,Linux 会正确地忽略它。只需将权限更改为从 运行的脚本上的类似权限0700即可。root:rootcron

许多像这样的工作都可以使用这种技术(一种数据库队列)来处理。当Web界面是系统管理的项目需求时,我就使用过它。在此类场景中,队列可以管理用户、密码、虚拟主机、DNS——凡是你能想到的。

相关内容