2011-07-26 11 views
1

私はログインとセッション管理のウェブサイトを持っており、ページはajaxを使ってフォームデータをサーバー側に送信します。ログインせずにajaxを使用するのを防ぐには?

は、どのように私はHTMLとJavaScriptを節約し、それによって完全にログインし、セッション管理をバイパスから人を守るのですか?

あなたは成功したログイン時にトークンを生成し、JSON文字列と一緒にこれを送信するので、サーバー側のスクリプトは、このに対してチェックすることができますか?

その場合は、私は使用することができ、このためのソリューションが存在しないので、私は彼らに自分自身を記述する必要はありませんか?

私は両方の今のうちしようとしているように私は、DjandoとRORの両方のソリューションに興味があります。

答えて

2

を使用してください。 AJAXリクエストは通常​​のリクエストと同じセッション内に存在するため、誰かがログインしている場合はAJAXリクエストにもログインしています。ユーザーがログインしていない場合は、AJAXリクエストについてもこれを確認できます。ユーザーがログインしている場合はサーバーをチェックし、ログインしていない場合はエラーコードを返します。

サーバは、誰かがログインしているかどうか、それを伝えるために、クライアントに頼るべきではありません。唯一のクライアントデータは、そのために使用するには、あなたがより安全になりたい場合は、IPアドレスと組み合わせてセッショントークン、です。

+2

私は追加します。ログイン/セッションがHTTPSを超えていない場合は、安全であるとみなされるべきではなく、IPでハッシュされるかどうか。 –

+1

はい、それは本当ですが、IPなしでは、セッションを引き継ぐためにセッションクッキーをどのマシンにもコピーできます。しかし、実際には、安全にしたい場合はSSLが必要です。 – GolezTrol

+0

@Chris Farmiloe:この場合SSLが重要な理由は何ですか? –

2

トークンを作成してクッキーに保存します。その後、どこのCookieをチェックしてください。すべてのあなたのajaxページを含む。クッキーは、あなたがajaxリクエストをしたときにも送られます。これは私が考えることができる唯一の安全なオプションです。バックエンドのトークンを常にチェックし、許可されていなければ拒否する必要があります。

+0

にログインしCURRENT_USER リダイレクトが必要なCookieされていない限り、デフ をlogin_required

をlogin_required?私は各URLにセッションIDを追加するのが好きなので、クッキーを許可するクライアントに依存しません。それはまさにそれと同じだろうか? –

+1

通常、Cookieを使用しますが、そうでない場合は、セッションIDをクライアント側の他の場所に保存できます。別のページに転送する必要がある場合は、クエリ文字列に渡すことができます(これが受け入れ可能な場合)。 – MarkR

0

ユーザーがログインしている検証アプリケーションコントローラにbefore_filterを追加します。

before_filter:ページ エンド

関連する問題