2016-09-05 5 views
0

は、ドキュメントを削除するには流星のメソッドを持っていると言うコンソールで高度なユーザーから保護してください要素(もし彼が_idを知っていれば、htmlを見ているかもしれません:) :)はMeteor.methodsが

"高度なユーザー"が邪魔にならないようにするために、すべてのメソッドに追加されたサーバーにsecret_keyがあったらどうなりますか?データ?

同様:

import { METHOD_TOKEN } from '/server/tokens.js'; 

Meteor.methods({ 

    discard_meeting({ token, meeting_id }) { 
    if (token === METHOD_TOKEN) { 
     Meetings.remove({ _id: meeting_id }); 
    } 
    }, 

}); 

あなたは、これは良いアイデアかもしれないと思いますか?

ありがとうございました。

答えて

0

しかし、もう一度誰かがブルートフォース検索であなたのトークンを見つけることによってあなたの方法にアクセスすることができます。あなたのユーザーがログインしていることを確認し、会議を削除する特権があるかどうかを確認するのが正しい方法です。次のようなものがあります。

meeting = Mettings.find({meetingId}); 

    if (this.userId != meeting.creator) { 
     throw new Meteor.Error('unauthorized', 'You are not allowed to delete the meeting!'); 
    } 

さらに、メソッドに渡すデータを検証する必要があります。簡単な方法はValidated Methodsを使用することです。 Meteor Guideを見て、正しいメソッド定義の記述方法を理解してください。

+0

これは明らかですが、トークンがクライアントに公開されない場合(値はサーバー上にのみ存在します)、どのように見つけられますか? –

+0

可能なすべてのトークン値を使用してメソッドを呼び出す – Kostas

+0

「すべての可能な値」は、小さなトークンに対してのみ実用的です。あなたがSHA256ハッシュのようなものを使うならば、ブルートフォース攻撃はおそらく実際的ではありません。メソッド呼び出しを抑制することもできます。 –

関連する問題