1

Struts 2 は、一意のランダム トークンを生成してセッションに保存し、トークン タグを使用してトークンをクライアント フォームに渡し、セッションとフォームからのトークンを検証することで、フォームの二重送信を停止します。

私の知る限り、セッションは互いに分離されているため、このソリューションは単一の JVM でのみ機能します。分散 Java 環境でこのソリューションを使用する方法について、役立つ情報が見つかりません。複数の JVM に対して Nginx プロキシ HTTP リクエストを使用しますが、Nginx は毎回同じリクエストを同じ JVM にプロキシすることを保証しません。

誰か助けてくれませんか?

ところで、私はこのソリューションを使用して CSRF 攻撃を阻止しようとしています。

4

1 に答える 1

1

2 つの選択肢があります (どちらも実際には Struts 2 とは何の関係もありませんが、分散環境でのセッション管理とはすべて関係があります)。

  1. セッション アフィニティを使用する - ユーザーがセッションを作成すると、Nginx はユーザーがアクセスしたバックエンド サーバーを記憶し、その後のすべてのリクエストでそのセッションがそのサーバーにバインドされます。(これは、より一般的なソリューションです)。始められるかもしれません。
  2. アプリケーション サーバーによっては、サーバー間でセッション データを共有できる場合があります。たとえば、Tomcat 6 では、構成の方向は.
于 2013-01-05T03:51:33.140 に答える