我们如何在docker环境中安全地使用rails和better_errors?

时间:2019-07-03 09:13:21

标签: ruby-on-rails docker

我知道我们不能使用非本地主机的better_errors

如果我们想在docker环境中使用Better_errors,可以使用BetterErrors::Middleware.allow_ip! '0.0.0.0/0'

但是它有安全风险。如果恶意用户访问同一网络上的主机,并且Rails应用程序偶然引起错误,则他可以执行Rails应用程序可以做的任何事情(例如:窃取所有源代码)。

有什么应对安全风险的想法吗?

2 个答案:

答案 0 :(得分:0)

2件事:

  1. 这只能在开发环境中使用,因此这种安全风险只会在开发代码时发生,而不会影响您的生产/登台服务器。
  2. 您可以使用docker的预定义子网:
  # Private subnets defined by RFC1918 as stated in https://docs.docker.com/v1.5/articles/networking/
  BetterErrors::Middleware.allow_ip! '10.0.0.0/8'
  BetterErrors::Middleware.allow_ip! '172.24.0.1/12'
  BetterErrors::Middleware.allow_ip! '172.16.0.0/12'
  BetterErrors::Middleware.allow_ip! '192.168.0.0/16'

应该限制可以访问机器本身的IP数量。

答案 1 :(得分:-1)

我在BetterErrors回购中找到了以下解决方案: https://github.com/BetterErrors/better_errors/issues/270#issuecomment-236236791

简而言之:

  1. 打开文件config/environments/development.rb
  2. 添加以下行BetterErrors::Middleware.allow_ip! "0.0.0.0/0"
  3. 重新启动服务器

如果仍然遇到问题,请尝试使用rails s -p 3000 -b'0.0.0.0'

启动服务器。

我在带有Docker Machine的Mac上使用它。