自我更新的Web应用程序的安全性

时间:2011-02-12 22:59:15

标签: ruby-on-rails security deployment automated-deployment

以下情况的安全性问题是什么? (这是有人会尝试的疯狂想法之一,也许这是一个好主意,也许这是一个可怕的想法......)

您在example.com上有Rails应用,在https://example.com/admin/update_app

有一个操作

此操作具有以下要求:

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

    1. 您将代码存储库密码放在字段中,然后点击“提交”
    2. 该操作启动一个shell脚本,该脚本从代码存储库的stable分支中提取最新更新,并将它们应用到站点(除非存储库验证失败,在这种情况下它会停止所有后续步骤)。
    3. 重新启动Web服务器
    4. 向管理员发送一封电子邮件,说明“App update complete”等简单内容。

2 个答案:

答案 0 :(得分:1)

嗯,这一切都提醒我通过git repository在服务器上重新发明了capistrano部署。

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

答案 1 :(得分:1)

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

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

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

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