以下の記事の内容に従って、Java で CSRF の安全なトークンを作成する方法をご紹介します。
Java の 暗号論的擬似乱数生成器 で乱数を作成できるクラスは、java.security.SecureRandom クラスになります。
また、安全なトークンの桁数は32桁になります。
import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; public class Csrf { private static int TOKEN_LENGTH = 16;//16*2=32バイト //32バイトのCSRFトークンを作成 public static String getCsrfToken() { byte token[] = new byte[TOKEN_LENGTH]; StringBuffer buf = new StringBuffer(); SecureRandom random = null; try { random = SecureRandom.getInstance("SHA1PRNG"); random.nextBytes(token); for (int i = 0; i < token.length; i++) { buf.append(String.format("%02x", token[i])); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return buf.toString(); } }
このクラスによって生成されたトークンは以下のようになります。
637c3945a289f39217a4585ab482c5f0
参考
Webアプリケーションセキュリティに関する記事は、以下のページにまとまっています。ぜひご確認ください。
コメント