Meteor에는 어떤 보안 메커니즘이 있습니까? [닫은]


92

우리는 Meteor가 클라이언트가 지속적 계층 (MongoDB)에 원활하게 액세스 할 수 있도록하는 miniMongo 드라이버를 제공한다는 것을 알고 있습니다.

클라이언트가 영구 API에 액세스 할 수 있다면 애플리케이션을 어떻게 보호합니까?

Meteor가 제공하는 보안 메커니즘은 무엇이며 어떤 맥락에서 사용해야합니까?


6
이 문제가 이미 해결되고 있다는 점이 마음에 들지만 비디오에서 실제로 언급 했어야합니다. 나는 그것을 보는 거의 모든 웹 개발자가이 질문이 끝날 때까지 10 초 후에 마음에 떠오를 것이라고 생각하며, 그런 멋진 제품에 대해 명백한 보안 문제를 완전히 무시하는 것처럼 보이는 것에 짜증이납니다.
Naatan

6
유성 0.5.0 추가 된 사용자 인증 meteor.com/blog/2012/10/17/...
hipertracker

다시 열려면이 단어를 약간 바꿀 수 있습니다. "어떤 보안 조치를 취해야합니까?" 또는 "사용 가능한 보안 옵션은 무엇입니까?"
joeytwiddle 2013

1
의견 기반? 와트? 나는 분명히 의견 기반이 아니기 때문에 이것은 재개 된 감사였습니다.
bjb568 2014

의견에 근거한 판결은 맥락과 맞지 않습니다. 답변은 사실에 근거합니다.
Olivier Refalo 2014

답변:


64

meteor 명령을 사용하여 앱을 생성하면 기본적으로 앱에 다음 패키지가 포함됩니다.

  • 자동 게시
  • 불안정한

이러한 기능은 각 클라이언트가 서버 데이터베이스에 대한 전체 읽기 / 쓰기 액세스 권한을 갖는 효과를 모방합니다. 이들은 유용한 프로토 타이핑 도구 (개발 목적으로 만 해당)이지만 일반적으로 프로덕션 애플리케이션에는 적합하지 않습니다. 프로덕션 릴리스 준비가되면 이러한 패키지를 제거하기 만하면됩니다.

더 추가하기 위해 Meteor는 인증을 처리하기 위해 Facebook / Twitter / 및 훨씬 더 많은 패키지를 지원 하며 가장 멋진 것은 Accounts-UI 패키지입니다.


2
유성 0.5 기준으로 수정
Olivier Refalo 2010 년

5
기본적으로 안전하지 않습니다. Yikes.
유다 가브리엘 희망 고

16
@JudahHimango 는 테스트 목적으로 만 안전하지 않으며 프로덕션 준비가되었을 때이 두 패키지를 제거하는 것은 간단합니다 meteor remove autopublish insecure.
BenjaminRH

1
유성 방법은 어떻습니까? 클라이언트는 서버에서 실행되기 때문에 안전하지 않은 설치를 제거해도 콘솔에서 액세스 할 수 있습니다. 어떻게 그들을 안전하게 만들 수 있습니까?
Matanya 2010 년

2
@Matanya 그러나 콘솔에서 사용 및 실행하면 access denied오류가 발생합니다. 확인 해봐.
ajduke 2014

35

에서 컬렉션 문서는 말합니다 :

현재 클라이언트에는 컬렉션에 대한 전체 쓰기 권한이 부여됩니다. 임의의 Mongo 업데이트 명령을 실행할 수 있습니다. 인증이 구축되면 클라이언트의 삽입, 업데이트 및 제거에 대한 직접 액세스를 제한 할 수 있습니다. 검증 인 및 기타 ORM과 유사한 기능도 고려하고 있습니다.


1
또한 Meteor 개발자 중 한 명의 답변으로 Quora에서이 스레드를 확인하십시오. quora.com/Meteor-web-framework/Whats-cool-about-Meteor/answer/…
dentarg

1
@jonathanKingston 링크가 끊어졌습니다. 업데이트 해 주시겠습니까?
Carlos Barcelona

@CarlosBarcelona 도메인이 만료되었으며 기사는 Meteor의 보안 업데이트 이전이었습니다. 구식이라고 말하는 것이 공정하다고 생각합니다. 그래서 사람들의 시간을 절약하기 위해 댓글을 삭제했습니다. 감사합니다
jonathanKingston

5

무단 삽입 / 업데이트 / 삭제 API를 사용하지 않도록 클라이언트를 제한하는 것에 대해 이야기하고 있다면 가능합니다.

https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos 에서 할 일 앱을 참조하십시오.

또한 이제 로그인하고 등록 할 수있는 내장 AUTH 모듈이 추가되었습니다. 그래서 안전합니다. XSS, 유효성 검사, 클라이언트 헤더 등을 처리하는 한

하지만 언제든지 node에 배포하여 meteor 앱을 완전히 작동하는 nodejs 애플리케이션으로 변환 할 수 있습니다. 따라서 nodejs 애플리케이션을 보호하는 방법을 알고 있다면 meteor를 보호 할 수 있어야합니다.


1
이것은 2012 년 9 월
Olivier Refalo

2

0.6.4부터 개발 모드 중에 is_client 및 is_server 블록은 여전히 ​​모두 클라이언트 시스템으로 이동합니다. 개발 모드를 끌 때 분리되어 있는지 말할 수 없습니다.

그러나 그렇지 않은 경우 해커는 if (Meteor.is_server) 코드 블록을 검토하여 시스템에서 통찰력을 얻을 수 있습니다. 특히 저는이 시점에서 여전히 컬렉션을 클라이언트와 서버에서 별도의 파일로 분리 할 수 ​​없다는 점을 지적했기 때문에 특히 우려됩니다.

최신 정보

요점은 보안 관련 코드를 서버가 아닌 디렉토리의 is_server 블록에 넣지 않는 것입니다 (즉, / server 아래에 있는지 확인하십시오.

클라이언트와 서버 디렉토리에서 클라이언트와 서버 컬렉션을 분리 할 수 ​​없다는 것에 대해 내가 미친 짓인지 알고 싶었습니다. 사실 이것에는 문제가 없습니다.

여기 내 테스트입니다. 제대로 작동하는 게시 / 구독 모델의 간단한 예입니다. http://goo.gl/E1c56


1
해결책은 서버 / 폴더에 코드를 저장하는 것입니다. 이렇게하면 클라이언트에 푸시되지 않습니다.
Olivier Refalo 2013

DRM은 참조하십시오 docs.meteor.com/#structuringyourapp을 - 민감한 코드를 클라이언트에 제공 할 필요가 없습니다
emgee

간단한 것을 시도하십시오. 서버 파일에 컬렉션을 만든 다음 클라이언트 파일에 동일한 컬렉션을 만들고 어떤 일이 발생하는지 알려주십시오. 다음으로 컬렉션 선언으로 루트 파일을 만든 다음 서버 및 클라이언트 디렉터리 파일에서 해당 루트 파일을 참조하고 어떤 일이 발생하는지 알려주십시오. 내가 할 수 없었던 것처럼 컬렉션을 만들 수 없다면 어떻게 독립적으로 참조 할 수 있습니까? 결국 동일한 클라이언트 사용 가능한 파일에 존재하고 is_server 및 is_client를 사용하려면 컬렉션에 대한 참조가 필요합니다. 내가 틀 렸으면 좋겠는데, 아직 그 방법과 이유를 찾지 못했습니다.
DrM

흠, 이상합니다. 테스트는 괜찮은 것 같습니다. 답변을 업데이트 할 것입니다
DrM

링크는 간단한 코드에 대한 저장소이지만, 과거에 이상한 오류가 무엇인지 또는 어떻게 다시 생성 할 수 있는지 확실하지 않고 잘 작동하는 것 같습니다.
DrM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.