Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから
公開日:2013年3月5日
最終更新日:2013年7月21日

CSRF の安全なトークンの作成方法

CSRF のトークンは一般的にはセッション ID を利用することが多いですが、より安全に対応するためにトークンを自分で作成することがあります。

これは、Cookie に保存されているセッション ID だと、クロスサイト・スクリプティングの脆弱性やブラウザの不具合などによりセッション ID が漏洩する可能性があるためです。また、会社のポリシーで独自トークンの利用が義務付けられていたり、ワンタイム・トークンを利用する場合にも自分でトークンを作成する必要があります。

CSRF の安全なトークンの作成条件は以下の通りです。

  • 暗号論的擬似乱数生成器による乱数でトークンを作成する
  • トークンの長さは32桁

■暗号論的擬似乱数生成器による乱数でトークンを作成する

CSRF のトークンを作成するためには、暗号論的擬似乱数生成器を使用して乱数を生成する必要があります。これを利用しないとセキュリティ上安全な乱数を生成できないからです。

Java, .NET, PHP では以下のものを使用することができます。

暗号論的擬似乱数生成器がない言語では、セッション ID をトークンに利用することが無難です。

■トークンの長さは32桁

CSRF のトークンの強度は、セッション ID と同程度でよいので、20桁以上あればよいと思いますが、いくつかの実装のセッション ID の桁数を見てみましょう。

  • Tomcat: 32桁
  • ASP.NET: 24桁
  • PHP: 26桁

この状況から、トークンが32桁あれば十分な強度であると言えます。


スポンサーリンク




カテゴリー:Webアプリケーションセキュリティ

Twitter でも、いろんな情報を発信しています。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA