PMD Javaルール Securityカテゴリ

PMDのJavaルールについてまとめます。バージョン6.35.0時のルールとなっています。
非推奨となっているルールには「△」を先頭に付与しています。

バージョン6.35.0から6.47.0までのルールの差分については別の記事でまとめています。 olafnosuke.hatenablog.com

Securityカテゴリ

潜在的なセキュリティ上の欠陥にフラグを立てるルールを含むカテゴリ。

HardCodedCryptoKey

暗号化操作にハードコードされた値を使用しない。

// NG
SecretKeySpec secretKeySpec = new SecretKeySpec("abcde".getBytes(), "AES");

// OK
SecretKeySpec secretKeySpec = new SecretKeySpec(Properties.getKey(), "AES");

ルール設定例

<rule ref="category/java/security.xml/HardCodedCryptoKey" />

InsecureCryptoIv

ハードコードされた初期化ベクトルを使用しないでランダムに生成されたIVを使用する。

// NG
byte[] iv = "secret iv in here".getBytes();

// OK
SecureRandom random = new SecureRandom();
byte iv[] = new byte[16];
random.nextBytes(bytes);

ルール設定例

<rule ref="category/java/security.xml/InsecureCryptoIv" />

他のカテゴリのルールもまとめています。

Best Practiceカテゴリのまとめはこちら: olafnosuke.hatenablog.com

Code Styleカテゴリのまとめはこちら: olafnosuke.hatenablog.com

Designカテゴリのまとめはこちら: olafnosuke.hatenablog.com

Documentationカテゴリのまとめはこちら: olafnosuke.hatenablog.com

Error Proneカテゴリのまとめはこちら: olafnosuke.hatenablog.com

Multithreadingカテゴリのまとめはこちら: olafnosuke.hatenablog.com

Performanceカテゴリのまとめはこちら: olafnosuke.hatenablog.com