Meteorが提供するminiMongoドライバーを使用すると、クライアントは永続レイヤー(MongoDB)にシームレスにアクセスできます。
クライアントが永続APIにアクセスできる場合、アプリケーションをどのように保護しますか?
Meteorが提供するセキュリティメカニズムはどのようなもので、どのようなコンテキストで使用する必要がありますか?
Meteorコマンドを使用してアプリを作成すると、デフォルトでアプリには次のパッケージが含まれます。
同時に、これらはサーバーのデータベースへの完全な読み取り/書き込みアクセスを持つ各クライアントの効果を模倣します。これらは有用なプロトタイピングツール(開発目的のみ)ですが、通常は実稼働アプリケーションには適していません。製品リリースの準備ができたら、これらのパッケージを削除するだけです。
さらに追加するために、Meteorは Facebook/Twitter /およびその他 パッケージをサポートし、認証を処理します。最もクールなのは Accounts-UI パッケージです
現在、クライアントにはコレクションへの完全な書き込みアクセス権が付与されています。任意のMongo更新コマンドを実行できます。認証を構築すると、クライアントの挿入、更新、削除への直接アクセスを制限できます。また、バリデーターやその他のORMのような機能も検討しています。
不正な挿入/更新/削除APIを使用しないようにクライアントを制限することについて話している場合、それは可能です。
https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos で彼らのtodoアプリを見てください
また、組み込みのAUTHモジュールが追加され、ログインと登録が可能になりました。安全です。 XSS、Valiations、クライアントヘッダーなどを処理している限り.
しかし、いつでもノードにデプロイすることで、meteorアプリを完全に機能するnodejsアプリケーションに変換できます。したがって、nodejsアプリケーションを保護する方法を知っていれば、meteorを保護できるはずです。
0.6.4の時点で、開発モード中、is_clientブロックとis_serverブロックは両方ともクライアントシステムに移動します。開発モードをオフにしたときにこれらが分離されているかどうかはわかりません。
ただし、そうでない場合、ハッカーはif(Meteor.is_server)コードのブロックを確認することでシステムから洞察を得ることができます。特に私は、この時点ではまだクライアントとサーバー上のコレクションを個別のファイルに分離できないことに気付いたので、私に関係しています。
まあ、ポイントは、セキュリティ関連のコードを非サーバーディレクトリのis_serverブロックに入れないことです(つまり、/ serverの下にあることを確認してください)。
私は、クライアントとサーバーのディレクトリでクライアントとサーバーのコレクションを分離できないことに夢中になっていたかどうかを見たかったのです。実際、これには問題はありません。
これが私のテストです。これは、パブリッシュ/サブスクライブモデルの簡単な例で、うまく機能しているようです。 http://goo.gl/E1c56