1

Puma 애플리케이션 서버에서 실행중인 Rails API 백엔드에 요청을 보내는 Nginx 서버에서 실행되는 AngularJS 프런트 엔드가 있습니다. 이 애플리케이션은 Amazon AWS EC2 인스턴스에서 실행됩니다.AWS의 AngularJS 및 Rails 애플리케이션 보안

레일즈 API는 내가 프런트 엔드에서 요청을 수신 할 수 있도록, AWS의 HTTP 포트 8081을 엽니 다했다이 아키텍처에 따르면 포트 8081

에 듣고있다.

도메인이 있으므로 모든 요청은 www.domain.com에서 가져온 것으로 가정합니다. 그러나 예를 들어 http://ec2-<ip>.eu-west-1.compute.amazonaws.com:8081/users과 같이 EC2 인스턴스 이름을 사용하면 Rails API가 모든 사용자 정보를 제공한다는 것을 알았습니다.

이 보안 버그를 방지하려면 어떻게해야합니까? 이 부분을 어디에서 차단해야합니까? AWS 구성에서? 내 Rails API CORS 구성에서? 그 밖의 다른 장소는 ...

답변

0

Rails API에 Authorization 버그가있는 것 같습니다. /users 경로에 응답하는 컨트롤러는 누구입니까? ,의 그것은 예를 들어, 위해,라고 UsersController하자 :이 경우, 당신은 액션 당신이 볼 수있는 정보를 반환 유사한

def index 
    @users = User.all 
end 

또는 무언가를 가질 수있다. 이 작업이 필요한지 (자동 생성 된 상용구 코드 일 수도 있음) 알지 못하거나 관리자가 아닌 사람에게 단순히 숨기고 싶다면 해결책을 제시하기가 어렵습니다 ... 누가 백엔드 API를 작성해야합니까? 사양에 따라이 문제를 해결하십시오.

+0

안녕하세요, 네, 정의한 메서드 인덱스가있는 UserController가 있다고 가정 해 보겠습니다. 그러나 자동 생성 된 상용구가 아니지만 프론트 엔드 (사용자가 로그인 한 곳)에서 호출 할 수있는 방법입니다. – Rober

+0

좋아요, 그럼 ... 그대로 두어도되지만 사용자가 인증되었는지 아닌지 확인해야합니다. 인증 과정을 모른 채로 이것보다 더 많은 것을 도울 수는 없습니다. 2 응용 프로그램 (프론트 엔드와 백엔드)은 서로 다른 두 웹 서비스에서 분리되어 있기 때문에 세션을 인증에 사용할 수 없습니다. 아마도 토큰이나 Api-key/Api-secret 쌍을 사용하고있을 것입니다. 그래도 백엔드 개발자는 이것을 관리하는 방법을 알아야합니다. 만약 당신이 그 중 하나를 사용하지 않는다면 반드시 소개해야합니다. 이렇게하려면 앞면과 뒷면 모두에서 작업해야합니다. – iMacTia

+0

나는 당신의 요지를 얻는다. 나는 그것에 대해 생각합니다. 하지만 지금까지 내 Rails API는 벙어리와 같았고 요청 만 처리하기 때문에 인증을 관리하지 않습니다. 이 책임은 프런트 엔드 측에 있습니다. CORS가 적절한 도구인지는 모르겠지만 URL이나 포트 (프런트 엔드 포트)에서 오는 요청 만 제공한다는 점에서 조금 더 일반적인 것으로 생각했습니다. – Rober