WordPress コメントよりユーザー名の漏洩を防ぐ

投稿者アーカイブ ページの URL から投稿者のユーザー名が知られてしまうということが、ちょっと前に話題になっていましたが、投稿者アーカイブ ページ以外にもユーザー名が知られてしまうことがあります。

それは、コメント欄の HTML のクラスです。コメントに表示される名前はニックネームでも、クラスには “comment-author-xxx”(xxx はユーザー名)のようにユーザー名が付加されたクラス名(以降「コメント著者クラス」と表記)が付加されてしまいます。

HTML は簡単に見ることができる(例え右クリックを禁止していてもデベロッパーツール等で見ることができます)ので、ユーザー名が知られてしまいます。

コメント著者クラスの削除

これを防ぐ方法としては、単純にこのコメント著者クラスを出力しないようにすることです。コメント著者クラスを使うことは殆どないでしょうからこれで十分だとおもいます。

コメント著者クラスを削除するには、下記のコードを functions.php 等に追加するだけです。

function remove_comment_author_class( $classes ) {
	foreach ( $classes as $key => $class ) {
		if ( strstr( $class, 'comment-author-' ) ) {
			unset( $classes[$key] );
		}
	}
	return $classes;
}
add_filter( 'comment_class', 'remove_comment_author_class', 10, 1 );

コメント著者クラスのユーザー名をユーザー ID へ変更

でも、「やっぱりコメント著者クラスは必要」という方のために、コメント著者クラスのユーザー名をユーザー ID へ変更する方法も紹介しておきます。

function change_comment_author_class( $classes, $class, $comment_id, $comment ) {
	foreach ( $classes as $key => $class ) {
		if ( strstr( $class, 'comment-author-' ) ) {
			$classes[$key] = 'comment-author-' . $comment->user_id;
		}
	}
	return $classes;
}
add_filter( 'comment_class', 'change_comment_author_class', 10, 4 );

プラグイン

なお、この機能をもったプラグインを公開しているので、プラグインで簡単に設定したいという方はこちらをどうぞ。

XO Security プラグイン

コメントを残す

メールアドレスが公開されることはありません。

日本語でコメントを入力してください。