1

以下场景的安全问题是什么?(这是有人会尝试的那些疯狂想法之一,也许这是一个好主意,也许这是一个糟糕的主意......)

您在 example.com 上有 Rails 应用程序,在https://example.com/admin/update_app有一个操作

此操作有以下要求:

  1. 它需要 https(如果不在 https 上则重定向)
  2. 它需要管理员权限
  3. 该操作会显示一个页面,其中包含一个显示“存储库密码:[]”的表单
  4. 该字段从服务器日志中过滤掉,与站点身份验证过滤的方式相同,通过 Rails 中的日志过滤机制(即这种方法

此操作执行以下操作

  1. 您将代码存储库密码输入该字段并点击“提交”
  2. 该操作启动一个 shell 脚本,该脚本从代码存储库的稳定分支中提取最新更新,并将它们应用到站点(除非存储库身份验证失败,在这种情况下它会停止所有进一步的步骤)
  3. Web 服务器已重新启动
  4. 会向管理员发送一封电子邮件,内容很简单,例如“应用更新完成”
4

2 回答 2

1

好吧,这一切都让我想起了通过 git 存储库在服务器上重新发明的 capistrano 部署。

唯一的问题是:1)如果在合并期间发生冲突怎么办(第2点)?2)如果网络服务器无法正确重启(第 3 点)怎么办?3)如果您的存储库中的分支不是那么稳定(第 2 点)怎么办?

于 2011-02-12T23:09:19.043 回答
1

不要发送密码。该应用程序可能会受到威胁和木马,或者过滤可能会失败。相反,通过单独的帐户或公共访问权限授予 Web 应用程序对存储库的只读访问权限。

如果没有更改,请不要重新启动服务器。然后即使没有访问控制,该操作也是安全的:除非开发人员通过更新稳定分支来授权更新,否则不会发生任何事情。如果稳定分支不是那么稳定,请为此创建一个单独的生产分支。

在进行更新之前停止网络服务器。该应用程序可能不安全或不安全地用作来自不同版本的文件的混合。

确保 Web 服务器不提供 VCS 留下的任何元数据文件。

于 2011-02-12T23:32:46.827 回答