Search code examples
ruby-on-railsangularjssecurityamazon-web-servicespuma

AngularJS and Rails application security in AWS


I have an AngularJS front-end running on a Nginx server that sends requests to a Rails API backend running on a Puma application server. This application is running on an Amazon AWS EC2 instance.

The Rails API is listening on port 8081.

According to this architecture I had to open the HTTP port 8081 in AWS, so that I could receive the request from the front-end.

I have a domain, so It´s supposed all request should come from www.domain.com. However, I have noticed that if I use my EC2 instance name, such as, in example http://ec2-<ip>.eu-west-1.compute.amazonaws.com:8081/users the Rails API is serving all my users information.

How can I avoid this security bug. Where should I block this? In AWS configuration? In my Rails API CORS configuration? Any other place...


Solution

  • This seems an Authorization bug in your Rails API. Who is the controller that answer to the route /users? Let's say it is, for e.g., UsersController: in this case, you could have an action

    def index
        @users = User.all
    end
    

    or something similar, that returns the information you see. Is difficult to give you a solution, without knowing if you need this action (maybe is just auto-generated boilerplate code) or if you want simply hiding it to who is not an Administrator... Who wrote the Back End API should fix this for you based on your specifications.