7

Rails で何らかの形の匿名ユーザー システムを実装することを検討しています。実際にアカウントを作成せずに、人々に何かをさせる必要があります (レコードを作成する、作成したものを見るなど)。アカウントを作成すると、Cookie などをクリアしてアカウントを失うリスクなしに、すべてが持続します。

今のところ、それはかなり簡単だと思います。User モデルに is_anonymous フィールドを用意し、次のようなものを使用して、現在ログインしているユーザーにアクセスします。

def find_user
  session[:user_id] ||= create_new_anonymous_user.id
end

セッションが妥当な期間持続し、セッション Cookie の有効期限が切れないと仮定すると、すべてがスムーズに実行され続けるはずです。

ただし、セキュリティ関連の何かが欠けていると確信している部分があります。誰かが前にこのようなことをしたことがありますか? 私は非常に明白な何かを見逃していますか?

ありがとう!

4

4 に答える 4

4

唯一の真のセキュリティ問題は、これらの匿名ユーザーが重要な操作を実行できるかどうかです。

あなたのシステムは、特定の Cookie を持っている人なら誰でもサイトにアクセスできることを意味します。必ずしも大したことではありませんが、実際にはユーザーが提供する情報の種類によって異なります。

私は過去に似たようなことをしたことがあります (私の場合、サイトの進行状況を追跡していて、ユーザーがログインまたは登録したときに、「ゲスト」データをアカウントに添付しました。切り替えを行うときは、必ず削除してくださいさらなるアクセスを防ぐための匿名の記録であり、それは問題ないはずです。

于 2009-01-10T04:33:26.587 に答える
2

Authlogic を使用した「試用ユーザー」のかなりクールな例を見つけました: http://github.com/gisikw/authlogic_trial

于 2009-10-13T15:53:30.493 に答える
0

存在しない可能性があるアカウントに関連付けられたオブジェクトをユーザーが作成できるようにしますか? 残念ながら、あなたのアプリケーションが実際に何をしているのかはよくわかりませんが、この道をたどると、実際のユーザーが実際に「所有」していない孤立したオブジェクトがたくさん残る可能性があると思います。

あなたが本当にこれをやりたいのなら、あなたが持っているものはまともだと思います。「ゲスト」(または何でも)としてフラグを立てた実際のユーザーを作成できます。ユーザーが実際に登録したい場合、他の情報の入力を求められ、フラグが解除されます。ゲスト対非ゲストなどのアクセス制御を追加する必要があります。

于 2009-01-10T20:58:50.373 に答える
0

セッションが妥当な期間持続し、セッション Cookie の有効期限が切れないと仮定すると、すべてがスムーズに実行され続けるはずです。

おそらく、新しいユーザー用に個別の長期 Cookie を設定して、(少なくともそのブラウザーから) 複数のセッションを持つことができるようにする必要があります。

于 2009-01-07T18:32:12.037 に答える