0

Webアプリのリクエストにトークンを追加できるメソッドまたは現在のAPIを探しています。たぶんセッション内ですが、持続しません。または、これを行うための効率的な方法を概説することによって私を助けることができれば

例えば

1.GETリクエスト=>サーブレットがトークンを生成してビューに出力します

2.非表示のトークンを含むビューを返します

<input type="hidden" name="token" value="UA37jdjs9UDJS3">
<input type="submit" name="deleteEmail" value="Delete">

3. POSTリクエスト=>フォームが送信され、トークンが同じかどうかがチェックされます。

注意すべき点はほとんどありません。Ajaxリクエストがある場合は、他のトークンがいくつかのリクエストに対して有効である必要があります。

ユーザーがブラウザを閉じることにした場合、セッションがタイムアウトしたときにトークンを停止する必要があります。

ユーザーがフォームに記入しなかった場合、サイトで何か他のことをするために出かけた場合、それらのトークンは未使用になるため削除する必要があります。

しかし、このようなシステムを実装するための最良の方法は何ですか、

Spring Security 3には使用できるシステムがありますか?

Java、Grails、Spring MVC、Spring Security 3、Hibernateエリア内

4

5 に答える 5

2

http://www.hdiv.org/でHDIVプロジェクトをご覧ください。彼らはまさにこれを行います。HDIVプロジェクトのコードを使用しない場合でも、そこにある情報から、自分でそれを行う方法を選択できる場合があります。CSRFなどのトークンの処理やダブルサブミットコントロールなどの他の用途について学ぶことは、私にとって良い入門書でした。

于 2010-01-08T02:20:50.380 に答える
1

最初に考えたのは、すでに生成されたセッションIDを使用するだけかもしれないということでした。しかし、状態をフォークしようとしている場合は、シーム会話モデルのようなものを使用することをお勧めします

于 2010-01-07T15:35:46.227 に答える
1

request.getSession()を呼び出すときにWebコンテナが生成するsession_idを使用しないのはなぜですか?

独自の「トークン」を作成したい場合は、Cookieを確認することをお勧めします。Cookieは、WebサーバーからWebブラウザーにHTTPヘッダーとして送信され、ブラウザーがそのサーバーにアクセスするたびに変更されずに返送されるキーと値のペアです。

サーブレットにCookieを作成するには、次を使用できます。

public void doGet ( HttpServletRequest request, HttpServletResponse response )
     throws ServletException, IOException {
  // Create a cookie
  Cookie c1 = new Cookie("yourdomain.token","the value");
  response.addCookie(c1);
 //build your response

}

Cookieは、次のhttpリクエストに自動的に含まれます。あなたはそれを読み返すことができます:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
//build your response
}
于 2010-01-07T16:45:29.610 に答える
1

http://grails.org/doc/1.2.0/guide/single.htmlにあるGrailsドキュメントの「SynchronizerTokenPattern」をご覧になりましたか?

于 2010-01-12T16:13:18.520 に答える
0

最近、このユースケースに遭遇しました。

古いアプリケーションウィンドウがブラウザに存在し、ログインリンクが別のブラウザウィンドウからクリックされた場合、ログインアクションは最初に新しいセッションを作成し、次にアプリケーションウィンドウにリダイレクトされます。これにより、古いウィンドウのonunloadメソッドメソッドがトリガーされ、サーバーへのログアウト要求が発生して、新しいユーザーがログアウトされました。

ログアウトするためにjavascriptonunloadイベントに依存することは、私にはちょっとくだらないように思えますが、これは変更できなかったので、OPが提案したように実行することを選択し、レンダリングされた各ビューにトークンを追加して、リクエストごとにチェックしました。これにより、onunloadログアウト要求が新しいセッションを終了するのを停止します。

最善の方法としては、これは非常に簡単だと思います。たとえば、http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.htmlを使用して一意のキーを生成できます。Tapestry、JSF、Wicketなどのコンポーネントベースのフレームワークを使用している場合は、これを処理するためのより高レベルの方法がある可能性があります。

これはあなたのユースケースに似ていますか?それとも、まったく異なる何かを達成しようとしていますか?

于 2010-01-07T18:31:19.707 に答える