우리는 Meteor가 클라이언트가 지속적 계층 (MongoDB)에 원활하게 액세스 할 수 있도록하는 miniMongo 드라이버를 제공한다는 것을 알고 있습니다.
클라이언트가 영구 API에 액세스 할 수 있다면 애플리케이션을 어떻게 보호합니까?
Meteor가 제공하는 보안 메커니즘은 무엇이며 어떤 맥락에서 사용해야합니까?
우리는 Meteor가 클라이언트가 지속적 계층 (MongoDB)에 원활하게 액세스 할 수 있도록하는 miniMongo 드라이버를 제공한다는 것을 알고 있습니다.
클라이언트가 영구 API에 액세스 할 수 있다면 애플리케이션을 어떻게 보호합니까?
Meteor가 제공하는 보안 메커니즘은 무엇이며 어떤 맥락에서 사용해야합니까?
답변:
meteor 명령을 사용하여 앱을 생성하면 기본적으로 앱에 다음 패키지가 포함됩니다.
이러한 기능은 각 클라이언트가 서버 데이터베이스에 대한 전체 읽기 / 쓰기 액세스 권한을 갖는 효과를 모방합니다. 이들은 유용한 프로토 타이핑 도구 (개발 목적으로 만 해당)이지만 일반적으로 프로덕션 애플리케이션에는 적합하지 않습니다. 프로덕션 릴리스 준비가되면 이러한 패키지를 제거하기 만하면됩니다.
더 추가하기 위해 Meteor는 인증을 처리하기 위해 Facebook / Twitter / 및 훨씬 더 많은 패키지를 지원 하며 가장 멋진 것은 Accounts-UI 패키지입니다.
meteor remove autopublish insecure
.
access denied
오류가 발생합니다. 확인 해봐.
에서 컬렉션 문서는 말합니다 :
현재 클라이언트에는 컬렉션에 대한 전체 쓰기 권한이 부여됩니다. 임의의 Mongo 업데이트 명령을 실행할 수 있습니다. 인증이 구축되면 클라이언트의 삽입, 업데이트 및 제거에 대한 직접 액세스를 제한 할 수 있습니다. 검증 인 및 기타 ORM과 유사한 기능도 고려하고 있습니다.
무단 삽입 / 업데이트 / 삭제 API를 사용하지 않도록 클라이언트를 제한하는 것에 대해 이야기하고 있다면 가능합니다.
https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos 에서 할 일 앱을 참조하십시오.
또한 이제 로그인하고 등록 할 수있는 내장 AUTH 모듈이 추가되었습니다. 그래서 안전합니다. XSS, 유효성 검사, 클라이언트 헤더 등을 처리하는 한
하지만 언제든지 node에 배포하여 meteor 앱을 완전히 작동하는 nodejs 애플리케이션으로 변환 할 수 있습니다. 따라서 nodejs 애플리케이션을 보호하는 방법을 알고 있다면 meteor를 보호 할 수 있어야합니다.
0.6.4부터 개발 모드 중에 is_client 및 is_server 블록은 여전히 모두 클라이언트 시스템으로 이동합니다. 개발 모드를 끌 때 분리되어 있는지 말할 수 없습니다.
그러나 그렇지 않은 경우 해커는 if (Meteor.is_server) 코드 블록을 검토하여 시스템에서 통찰력을 얻을 수 있습니다. 특히 저는이 시점에서 여전히 컬렉션을 클라이언트와 서버에서 별도의 파일로 분리 할 수 없다는 점을 지적했기 때문에 특히 우려됩니다.
요점은 보안 관련 코드를 서버가 아닌 디렉토리의 is_server 블록에 넣지 않는 것입니다 (즉, / server 아래에 있는지 확인하십시오.
클라이언트와 서버 디렉토리에서 클라이언트와 서버 컬렉션을 분리 할 수 없다는 것에 대해 내가 미친 짓인지 알고 싶었습니다. 사실 이것에는 문제가 없습니다.
여기 내 테스트입니다. 제대로 작동하는 게시 / 구독 모델의 간단한 예입니다. http://goo.gl/E1c56