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