2011-01-11 1 views
2

私はRails 3、devise、cancanを使用しています。私は、サブドメイン固有のCookieを設定し、ユーザー名とともにサブドメインを認証キーとして使用します。私は特定のサブドメインでユーザーを認証する際サブドメインクッキーによる認証により、他のサブドメインに簡単にアクセスできます

すなわち

devise :authentication_keys => [:username, :subdomain] 

したがって、ユーザーは、他のサブドメインへのアクセス権を持っていません。 Cookieセッション(firebug)を編集してクッキーのドメインを変更するだけで(foo.mydomain.comからfee.mydomain.comに変更する)、ユーザーは新しいサブドメインへのアクセス権を取得します。

私はcancanによるアクセスをブロックすることができますが、理想的には認証でユーザーを制限したいと考えています。それはどういうわけか、より安全で、設定が少なくてすむように感じました(ability.rbにはいくつかの行があります)。

どのようにこの死んだ単純なハッキングを防止するための任意のアイデアn?

+0

私はこれに二次的な問題がありました。 1つのサブドメインからユーザーを招待し、別のドメインを指すようにリンクを調整すると、ユーザーは他のドメインに正常に登録されます(悪い!)。これに遭遇しましたか? – cjm2671

答えて

1

サブドメインをチェックして、ユーザーがログインできるサブドメインと比較するコントローラーのフィルターが消えてしまいました。

#application_controller.rb 
def check_account_id 

    account ||= Account.find(current_user.account_id) 

    account.domains.each do |domain| 

     if domain.name == request.subdomain 
     return true 
     end 
    end 

    flash[:error] = "You must be logged in to access this subdomain" 

    sign_out current_user 
    redirect_to new_user_session_path 
end 

と私のオブジェクト制御

#myobjects_contoller.rb 

before_filter: check_account_id 
before_filter: authenticate_user! 
.... 

わからないこの場合は最もエレガントな方法で

が、それは作業を行います。しかし、許可されたサブドメインについて知ってもらう方法があればいいですね。おそらく、これは潜在的な機能要求です。

関連する問題