【问题标题】:AngularJS and Rails application security in AWSAWS 中的 AngularJS 和 Rails 应用程序安全性
【发布时间】:2014-11-19 00:46:33
【问题描述】:

我有一个运行在 Nginx 服务器上的 AngularJS 前端,它向运行在 Puma 应用服务器上的 Rails API 后端发送请求。此应用程序在 Amazon AWS EC2 实例上运行。

Rails API 正在侦听端口 8081。

根据这个架构,我必须在 AWS 中打开 HTTP 端口 8081,这样我才能接收来自前端的请求。

我有一个域,所以所有请求都应该来自 www.domain.com。但是,我注意到,如果我使用我的 EC2 实例名称,例如 http://ec2-<ip>.eu-west-1.compute.amazonaws.com:8081/users,Rails API 会为我的所有用户信息提供服务。

我怎样才能避免这个安全漏洞。我应该在哪里阻止这个?在 AWS 配置中?在我的 Rails API CORS 配置中?其他任何地方...

【问题讨论】:

    标签: ruby-on-rails angularjs security amazon-web-services puma


    【解决方案1】:

    这似乎是 Rails API 中的 Authorization 错误。 谁是响应路由/users 的控制器? 假设它是,例如,UsersController:在这种情况下,您可以采取行动

    def index
        @users = User.all
    end
    

    或类似的东西,返回您看到的信息。 很难为您提供解决方案,不知道您是否需要此操作(可能只是自动生成的样板代码),或者您是否只想将其隐藏给不是管理员的人...... 编写后端 API 的人应根据您的规范为您解决此问题。

    【讨论】:

    • 嗨,是的,假设我有一个带有您定义的方法索引的 UserController。但是,它不是自动生成的样板,而是可以从我的前端(用户登录的地方)调用的方法。
    • 好的,所以...您可以将其保留在原处,但您需要检查用户是否经过身份验证。在不了解您的身份验证过程的情况下,无能为力。由于 2 个应用程序(前端和后端)在两个不同的 Web 服务中分开,因此您不能使用会话进行身份验证。您可能正在使用令牌或 Api-key/Api-secret 对,或其他任何东西。尽管如此,后端开发人员应该知道如何管理它 :) 如果您不使用它们中的任何一个,您肯定应该介绍它们。这将需要前端和后端的工作。
    • 我明白你的意思。我会考虑的。但到目前为止,我的 Rails API 很笨,它只服务请求,不管理身份验证。这种责任在前端。我在想一些更笼统的东西,例如,您只会处理来自 url 或端口(前端端口)的请求,我不知道 CORS 是否是合适的工具。
    • 作为临时解决方案是的,您可以指示后端仅接受来自特定 IP 的请求。你可以使用CORS,看看这个CORS with Rails。正如您将读到的,它不是解决兼容性问题的最佳解决方案。另一种解决方案可以在网络服务器级别设置访问,但我不知道如何使用 Puma 进行此操作 :(。如果可以的话,也为 Rails API 应用程序移动到 Nginx(AFAIK,Puma 更适合 Sinatra)并在此处进行设置:link
    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2011-02-11
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多