WordPressのコメント欄って、管理人が書き込んだ場合にログインネームがクラス名として第三者から見える仕様になってますね。
中の人だけ特別な表示にしたり色々と遊べるのかも知れないけど、めちゃくちゃセキュリティーホールなので本当やめて欲しいです。
…とか文句言ってても始まらないので一刻も早く手直ししましょう。
コメントリストにクラスとして付与される著者情報
コメント欄のliリストタグにはCSSで振り分けられるように様々なクラスがつけられています。中でも著者にはクラス名としてユーザネームがつきますね。(ゲストさんは特に身バレするような情報は表に出てきません。)
そこに、こんな感じでログイン名が表示されます。
【class情報】
class="comment byuser comment-author-xxxxxxxxxx bypostauthor even thread-even depth-1"
他人を疑わない無垢な仕様ってのも困ったものです。
comment-template.php の comment_class()が怪しい
コメント関連ということで comment-template.php を覗いてみます。
/wp-includes/comment-template.php
“comment-author-” でファイル内検索すると、365行付近にそれらしいコードがありました。
【comment-template.php】
$classes[] = 'comment-author-' . sanitize_html_class($user->user_nicename, $comment->user_id);
wp_usersテーブルから登録ユーザIDを取ってきて、ニックネームを突っ込んでるようです。
comment-author-を好きな文字列に変える
該当箇所を丸ごと消しても良いんですけど、せっかくなので好きな名前に書き換えてしまいましょう。コアファイルはそのままにして、function.phpに上書きする関数を作ります。
【function.php】
function ozChange_comment_author_class( $classes ) {
foreach( $classes as $key => $class ) {
if(strstr($class, "comment-author-")) {
$classes[$key] = 'comment-author-' .'任意の文字列';
}
}
return $classes;
}
add_filter( 'comment_class' , 'ozChange_comment_author_class' );
処理が雑で済みません。マルチユーザ環境の場合はユーザID見て振り分けることになるのかな。
display_nameの設定
バリエーションとしては、ログインユーザを保持する wp_users テーブルにある display_name ってフィールドも使えそうです。ダッシュボード側で任意名称のユーザ属性を増やせるので、それ使うと良いかも知れません。
ダッシュボード > ユーザー > あなたのプロフィール > ブログ上の表示名
comment-author-xxx そのものを消したい
文字列を書き換えても依然として byuser や bypostauthor は残ります。
つまり少なくとも登録ユーザとゲストの見た目を分けることは可能なので、小規模サイトだったら comment-author-xxx そのものを消してしまっても良いのかも。
【function.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' );
Small Security Hole in WordPress Comments • bavotasan.com
WordPressコメント欄の著者情報を変えてみた
参考にしたサイトのタイトルが「スモールセキュリティホール」であるとおり、ログインネームの漏洩は侵入の糸口になり得ます。特に広く使われてるWordPressはクラッカーに狙われやすいので何らかの対策をしておきたいところ。
それにしてもWordPressを本格的に使うようになって、色んな人がメンテナンス記事ばかり書いてる意味が良く判りました。エラー対応と仕様変更対応に追われて、メインの科学ネタを書く暇が全然ないです。( ○ Д ○ )
ずっと困ってたので、助かりました。comment-author-xxx消せました。ありがとうございます。
お返事遅くなりました。お役に立てて良かったです。(´∀`*)