2

CSRF 保護を実装する必要がある struts2 webapp があります。ステータスフォームの場合、それはかなり簡単です。tokenSessionインターセプターをアクティブにし<s:token/>てから、送信するフォームに設定するだけです。(ここここで説明されています)

しかし、必ずしもフォーム経由で送信されるとは限らない POST AJAX 呼び出し (私は jQuery を使用しています) に対して CSRF 保護を有効にする必要がある場合に問題が発生します。後続の AJAX 呼び出しを行うときにトークンを再利用するという問題に直面しています。

任意のポインタまたは別のアプローチをいただければ幸いです。

4

2 に答える 2

2

現在、AJAXリクエストのトークンを生成し、通常のレスポンスで送信することで問題を解決しました-

    Map<String, String> tokenInfo = Maps.newHashMap();
    tokenInfo.put("struts.token.name", TokenHelper.getTokenName());
    tokenInfo.put(TokenHelper.getTokenName(), TokenHelper.setToken());

これから util メソッドを抽象化し、ページを更新せずに繰り返し実行されるアクションの応答の一部としてこれを返すようにトークンでアクティブ化されるアクションを作成します。

私はまだこれに対するエレガントな解決策を探しています。

于 2012-11-13T18:47:42.000 に答える
0

トークンを生成して ajax 呼び出しのパラメーターとして使用できませんか?

後続の AJAX 呼び出しではper-user Token

必ずしもper-request Token_

この SO 回答で説明されているように: jQuery .ajax() に CSRF トークンが必要ですか?

于 2012-11-13T09:43:40.980 に答える