5

有人可以就处理与配置文件(如 httpd.conf、绑定区域文件等)交互的 Web 应用程序提出一些基本建议吗?

我知道这是不好的做法,实际上在没有完全验证的情况下允许任意执行代码非常危险,依此类推。但是假设您的任务是编写一个允许将虚拟主机添加到 apache 配置的小应用程序。

您是否让您的代码以完全权限执行,您是否将未来的变量写入数据库并让一个 cron 作业(具有完全权限)执行一个脚本,该脚本从数据库中提取变量并将它们扔到模板配置文件中,等等。

对此问题的一些想法和贡献将不胜感激。

tl;dr - 您如何安全地编写 Web 应用程序来更新/创建配置文件中的条目,如 apache 的 httpd.conf 等。

4

2 回答 2

1

我不是 Unix 安全专家,但需要考虑一些基本的事情:

  • 确保您的 Web 应用程序以特定用户身份运行,并确保该用户仅对应该修改的文件拥有特权。

  • 不允许将任意输入添加到文件中,具有严格的形式,其中每个字段都经过验证以仅包含它应该包含的内容,例如仅 az 和 0-9 等。

  • 使用 HTTPS 访问该站点。

我敢肯定还有更多来自真正的大师。

于 2011-01-01T08:31:32.400 回答
0

我知道这是不好的做法,实际上在没有完全验证的情况下允许任意执行代码非常危险,依此类推。

真的。

但是假设您的任务是编写一个允许将虚拟主机添加到 apache 配置的小应用程序。

与第一点无关。完全不相关。确实,为什么第一点甚至在那里?

添加虚拟主机是一个简单的脚本。您只需编写脚本并使其工作。它需要非凡的特权。但这不是“任意执行代码”。它将被“完全验证”(无论这意味着什么。你写它。你验证它。)

对于“网络应用程序”来说,这不是一个好的选择。对于守护进程来说,这也不是一个好的选择。实际上,很难看出“将虚拟主机添加到 apache 配置”和“控制守护进程的 Web 应用程序”之间的联系。

它只是一个只更新文件的脚本。没什么特别的。它需要特权,因此只有少数人可以运行它。那里也没什么特别的。使用sudo.

您是否让您的代码以完全权限执行,

明显地。如果没有某些权限,该脚本无法更新虚拟主机。

除非“您的代码”不是指更新虚拟主机的脚本。如果您指的是其他内容,例如允许某人运行更新虚拟主机的脚本的网页。在这种情况下,您已将脚本与运行该脚本的 Web 应用程序混为一谈。

您是否将未来的变量写入数据库并有一个 cron 作业(具有完全权限)执行一个脚本,该脚本从数据库中提取变量并将它们放入模板配置文件等。

当然。人们这样做。看起来非常复杂。

使用celery而不是滚动您自己的后台处理器。 http://ask.github.com/celery/getting-started/introduction.html

于 2011-01-01T13:56:15.053 回答