/ / Strutsトークンを使用したクロスサイトリクエストフォージェリ防止-Java、Struts、クロスドメイン、Struts-1

strutsトークンを使用したクロスサイトリクエスト偽造防止 - java、struts、クロスドメイン、struts-1

クロスサイトリクエストフォージェリを実装したいStruts 1.xフレームワークに基づいたWebアプリケーションの防止。 Struts 2フレームワークがこれにトークンインターセプターを提供し、フィルターを使用して同様の機能を実装できることを知っています。

私はいくつかの考えについて少し混乱しています 1)どうすれば簡単な方法で一意のトークンを生成できますか? (この目的のために、重複したフォーム送信を回避するために使用されるActionクラストークンを使用できます)

CSRF防止のためのStruts 1.xフレームワークトークンメカニズムの使用に問題はありますか

回答:

回答№1の17

Struts 1アクショントークンメソッドは次のように機能しますStruts 2トークンインターセプターは、セッションにトークンを追加し、フォーム送信時にトークンをチェックしますが、はるかに手動のプロセスです。基本的なワークフローは次のとおりです。

  1. ユーザーは(JSPに直接ではなく)Strutsアクションを介してフォームにアクセスします。 Strutsアクションは呼び出します saveToken(request) フォームを含むJSPに転送する前。
  2. JSPのフォームは、 <html:form> タグ。
  3. フォームが送信するアクションは最初に呼び出されます isTokenValid(request, true)、最初のアクションに戻った場合は、エラーメッセージを付けて最初のアクションにリダイレクトする必要があります false。これにより、次のリクエストのトークンもリセットされます。

これを行うと、フォームの重複が防止されるだけではありませんただし、スクリプトは最初のStrutsアクションをヒットしてセッションを取得してから、2番目のStrutsアクションに送信してフォームを送信する必要があります。サイトは別のサイトのセッションを設定できないため、CSRFを防ぐ必要があります。

通常、ユーザーをJSPに直接送信する場合は、「t。」ではなく、から継承する新しいクラスを作成します ActionForward これをそのままに設定します execute() 方法:

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)  throws Exception {
saveToken(request);
return super.execute(mapping, form, request, response);
}