Meteorにはどのようなセキュリティメカニズムがありますか?[閉まっている]


92

Meteorがクライアントが永続レイヤー(MongoDB)にシームレスにアクセスできるようにするminiMongoドライバーを提供していることは誰もが知っています。

クライアントが永続APIにアクセスできる場合、どのようにしてアプリケーションを保護できますか?

Meteorが提供するセキュリティメカニズムはどのようなもので、どのようなコンテキストで使用する必要がありますか?


6
私はこれがすでに対処されていることを気に入っていますが、彼らは本当にビデオでこれについて言及すべきでした。私はそれを見るほとんどすべてのWeb開発者がそれの最後まで10秒の時点でこの問題を頭に持っていると思います、そしてそのような素晴らしい製品のために彼らが明らかなセキュリティ問題を完全に無視しているように見えるのにイライラするだけです。
Naatan

6
流星0.5.0追加されたユーザ認証meteor.com/blog/2012/10/17/...
hipertracker

これを少し書き直して、再び開くことができます。おそらく「どのようなセキュリティ対策を講じる必要がありますか?」または「利用可能なセキュリティオプションは?」
joeytwiddle 2013年

1
意見ベース?ワット?それは明らかに意見に基づくものではないため、これは再開監査であったと思います。
bjb568 2014

意見に基づく判決は文脈外です-答えは真の事実に基づいています。
Olivier Refalo 14

回答:


64

meteorコマンドを使用してアプリを作成すると、アプリにはデフォルトで次のパッケージが含まれます。

  • 自動発行
  • 安全でない

これらは共に、サーバーのデータベースへの完全な読み取り/書き込みアクセス権を持つ各クライアントの効果を模倣しています。これらは有用なプロトタイピングツール(開発目的のみ)ですが、通常は本番アプリケーションには適していません。本番リリースの準備ができたら、これらのパッケージを削除してください。

さらに追加するために、MeteorはFacebook / Twitter /および認証を処理するためのはるかに多くのパッケージをサポートしてます。最もクールなのはAccounts-UIパッケージです。


2
流星0.5の時点で正解
Olivier Refalo

5
デフォルトでは安全ではありません。うわぁ。
ユダガブリエルヒマンゴ2013年

16
@JudahHimango はテスト目的だけでは安全ではなく、本番環境の準備ができたときにこれらの2つのパッケージを削除するのは簡単meteor remove autopublish insecureです。
BenjaminRH

1
流星法はどうですか?クライアントはサーバー上で実行されるため、アンインストールが安全でない場合でも、コンソールからそれらにアクセスできます。どのようにしてそれらを安全にすることができますか?
Matanya 2013年

2
@Matanyaですが、コンソールから使用および実行すると、access deniedエラーがスローされます。見てみな。
ajduke 14

35

コレクションDOCは言います:

現在、クライアントにはコレクションへの完全な書き込みアクセス権が与えられています。任意のMongo更新コマンドを実行できます。認証を作成したら、クライアントの直接アクセスを挿入、更新、削除に制限できます。バリデーターや他のORMのような機能も検討しています。


1
:また、流星の開発者の一人からの回答とQuoraの上でこのスレッドSE quora.com/Meteor-web-framework/Whats-cool-about-Meteor/answer/...を
dentarg

1
@jonathanKingstonリンクが壊れています。更新していただけますか?
カルロスバルセロナ

@CarlosBarcelonaドメインの有効期限が切れており、記事はMeteorのセキュリティ更新前のものでした。私はそれが時代遅れだったと言うのは公平だと思います。コメントを削除して時間を節約しました。ありがとう
jonathanKingston 2013

5

許可されていない挿入/更新/削除APIを使用しないようにクライアントを制限することについて話している場合、それは可能です。

https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todosで、todoアプリをご覧ください。

また、ログインと登録を可能にする組み込みのAUTHモジュールが追加されました。安全です。XSS、Valiations、クライアントヘッダーなどを管理している限り。

しかし、ノードにデプロイすることで、いつでも流星アプリを完全に機能するnodejsアプリケーションに変換できます。したがって、nodejsアプリケーションを保護する方法を知っている場合は、流星を保護できるはずです。


1
これは2012年9月の時点で完全に当てはまります
Olivier Refalo '21

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 2013

うーん、奇妙なことですが、テストは問題ないようです。回答が更新されます
DrM

リンクは単純なコードへのリポジトリですが、正常に機能しているようです。奇妙なエラーが過去に何であったか、またはどのようにそれらを再作成するかはわかりません。
DrM 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.