2

XSRF攻撃のGWTPアプリから保護しようとしています。JSESSIONのように直面している問題は、parozテストツールに簡単にアクセスできます。ユーザーがすでにログインしていて、同時にparozによって同じサーバー要求を行った場合は、そのツールを使用します。更新された値で同じトランザクションを実行しますが、これはセキュリティ上の問題です。

これを停止するには、リクエストごとに新しいCookieを作成し、クライアントからサーバーに送信する必要があります。

@SecurityCookie
public static final String securityCookieName = getRandomString(); //Not work

ClientModuleの場合

public class ClientModule extends AbstractPresenterModule {

    @Override
    protected void configure() {

        bindConstant().annotatedWith(SecurityCookie.class).to(
                NameTokens.securityCookieName);

そしてDispatchServletModuleで

public class DispatchServletModule extends ServletModule {

    @Override
    public void configureServlets() {
        bindConstant().annotatedWith(SecurityCookie.class).to(NameTokens.securityCookieName);

'JSESSIONID'の代わりにランダムにCookieを生成したい。どのように/どこで行うのですか?そして、GWTPでリクエストごとにCookieを再生成する適切な方法は何ですか?

4

1 に答える 1

0

一般的なgwtについては、 XSRF保護を参照してください。

これはRPC呼び出し用です。

RPC XSRF保護は、RpcToken機能を使用して構築されます。これにより、開発者はHasRpcTokenインターフェイスを使用してRPCエンドポイントにトークンを設定し、そのエンドポイントを介して行われる各RPC呼び出しにそのトークンを含めることができます。

トークンを取得したコールバックで呼び出されるようにrcp呼び出しを書き直す必要がありますが、実装はそれほど難しくありません。

編集

ランダム化されたCookie名の必要性がわかりません。標準のGWT保護の場合、セット名を指定する必要があります。

<context-param>
  <param-name>gwt.xsrf.session_cookie_name</param-name>
  <param-value>JSESSIONID</param-value>
</context-param>

gwtpの状態について明示的に引用したドキュメント:

XSRF攻撃からアプリケーションを保護するには、「GWTアプリケーションのセキュリティ」で説明されているように、使用するセキュリティCookieの名前を指定する必要があります。 これを行うには、クライアントとサーバーの両方で@SecurityCookieで注釈が付けられた文字列定数をバインドします。

ユーザーがログインしているかどうかは問題ではないと思います。悪意のあるコードはJSESSIONIDCookie(または指定したCookie)を読み取ることができず、Cookieの値が必要です(Cookieを送信できることを確認しますが、悪意があるため何もしませんコードには値が必要です。これにより、すべてのリクエストを送信する一意のトークンを計算できます)。これはドキュメントが言うことです:

デフォルトのXSRF保護実装は、セッションCookie値のMD5ハッシュを生成し、結果のハッシュをXSRFトークンとして使用することにより、セッション認証CookieからXSRFトークンを取得します。このステートレスXSRF保護の実装は、攻撃者がセッションCookieにアクセスできないため、有効なXSRFトークンを生成できないという事実に依存しています。

したがって、Cookie名を機能するように構成するには、Cookie名を指定する必要があります。そうしないと、 GWTはそのCookieの値を使用して、すべてのrpc呼び出しのに取得し、すべてのrpc呼び出しに含めるエンドポイントトークンを生成できません。

したがって、標準のgwtを使用していないため、独自のXSRF保護を実装する必要はないと思いますが、xsrf保護の実装を使用するようにgwtpを構成するには、引用したドキュメントに従う必要があると思います。

于 2012-08-15T12:20:02.713 に答える