SP用メニューボタン
ソレゾレブログ

技術的な事だったり日常の気になる事だったり

WordPressコメント機能のスパム対策と関連する設定について(ディスカッションの設定)

スポンサーリンク

検証環境

この機能の検証はWordpress5.8.1で行っています。

この記事は、Wordpressで有効なセキュリティの一覧についてまとめた下記ブログの下位文章です。気になる方は親文章も参照してみてください。

WordPressのコメント投稿機能

WordPressの投稿には、閲覧者がコメントできる機能がついております。このコメント欄に書き込むことで、投稿者やほかの閲覧者とコミュニケーションをとることが出来ます。

インターネットという無機質な世界で、他者とコミュニケーションをとれることは素晴らしいことですが、この機能を悪用した大量の迷惑コメントの投稿や、投稿者に対して誹謗中傷などの心無いコメント投稿があるというのも事実です。

ここでは、コメント投稿のセキュリティ対策と、それに関連する設定について書いていきたいと思います。

スポンサーリンク

コメント機能自体のオン/オフ

コメント機能自体をオン/オフしたいなら [設定] – [ディスカッション] – [新しい投稿へのコメントを許可] を設定します。初期値はオンです。セキュリティ上コメント投稿を無効にしたいならこの設定をオフにすれば問題ありません。

「設定を保存」ボタンをクリックして設定保存を忘れないようにしましょう。

コメント機能自体のオン/オフ設定画面

尚、「これらの設定は各投稿ごとの設定で上書きされることがあります」と記載があるように、 [新しい投稿へのコメントを許可] 配下にある3つの設定は、個別投稿ページの設定に上書きされます。

個別投稿ページの [投稿] – [ディスカッション]の設定(下記画像の設定)を間違ってオンにしないように気を付けましょう。下記設定がオンだとこちらの設定が強いため、先程の設定は意味を成しません。

個別投稿ページのディスカッション

コメント投稿を無効にした場合は、下記のように「コメントは受け付けていません」と表示されます。

コメント投稿が無効な場合のコメント欄表示

コメント投稿が有効な場合は、下記のようにコメント投稿欄が表示されます。

コメント投稿が有効な場合のコメント投稿欄表示

コメント投稿欄を投稿記事に組み込む(補足情報)

コメント投稿のセキュリティにまつわる記事ですので、コメント投稿を組み込む方法を書いていることに違和感がありますが、以降の記事は、コメント投稿が有効な場合のセキュリティ対策ですので、補足として、コメントの有効方法を記載します。

コメント欄を自分の記事に組み込むには、コメント欄を表示したい場所にcomments_template関数を組み込みます。

引数に何もつけなければwp-includes配下の「comment.php」ファイルをテンプレートとして使用します。

カスタムテンプレートを使いたい場合は、wp-content\themes\テーマフォルダ\テンプレート名.phpを作成して第一引数に設定します。

//comment.phpをそのまま使う
<?php comments_template(); ?>

//カスタムテンプレートを使う場合
<?php comments_template( /テンプレート名.php ); ?>

自分の投稿に張り付けたリンク先にピンバックする機能

「投稿中からリンクしたすべてのブログへの通知を試みる」は、自分の投稿記事に他のサイト記事へのリンクを張った場合に、ピンバック(自分の記事にあなたの記事を紹介るするリンクを張りましたよという自動通知機能)する機能です。必要であればオンにしましょう。初期値はオンです。

投稿中からリンクしたすべてのブログへの通知を試みる

ただ、先方がピンバックを受け取るには先方もピンバックを受け取る機能をオンにしていなけばいけません。次の設定がそれにあたります。

ピンバック・トラックバック機能だけオフにする

「新しい投稿に対し他のブログからの通知 (ピンバック・トラックバック) を受け付ける」の設定は、自サイトの記事へのリンクが他サイトに張られ、さらに、他サイトがピンバックやトラックバックした際に、自分がそれを受信するかしないか制御する設定です。必要に応じて設定しましょう。初期値はオンです。

新しい投稿に対し他のブログからの通知 (ピンバック・トラックバック) を受け付ける

尚、ピンバック・トラックバックがわからない方は下記外部の記事がわかりやすいと思います。

スポンサーリンク

匿名投稿をさせないようにする

コメントを投稿する際に、名前とメールアドレスの入力をしないとコメント投稿できないようにできます。初期値では有効化されています。

[設定] – [ディスカッション] – [コメントの投稿者の名前とメールアドレスの入力を必須にする]で設定できます。

セキュリティの事を考えると有効にしておくほうが良いです。この設定有効化で完全にスパムを阻止できるわけではありませんが、入力項目が多いおかげで悪意のある自動投稿ボットなどからの投稿がされにくくなります。

匿名投稿をさせないようにする方法

「コメントの投稿者の名前とメールアドレスの入力を必須にする」設定が有効化されていると、名前とメールアドレスの入力欄に入力必須を表す「*」アスタリスクが表示され、 名前とメールアドレスを入力しないと投稿できなくなります。

コメントの投稿者の名前とメールアドレスの入力を必須にする設定

WordPressに登録されたユーザーだけコメントできるようにする

Wordpresにユーザー登録されたユーザーのみ投稿することが出来ます。Wordpressには、購読者/寄稿者/投稿者/編集者/管理者のユーザー権限がありますが、どのユーザーでもコメント投稿出来ます。

WordPressユーザーのみにコメント投稿を制限する場合は、[設定] – [ディスカッション] で [ユーザー登録してログインしたユーザーのみコメントをつけられるようにする] の設定をオンにして「設定を保存」をクリックします。

設定を有効化した場合、コメント投稿欄に「コメントを投稿するにはログインしてください」と表示され、ログインしなければコメント投稿できないようになります。

ユーザー登録してログインしたユーザーのみコメントをつけられるようにするを設定しているときのコメント投稿欄

コメントの手動承認を必須にする

コメントを投稿した場合、管理者の承認が無いと投稿したコメントが表示されないように強制できます。これは、誹謗中傷などの迷惑投稿に効果的です。

監理画面の [設定] – [ディスカッション] で [コメントの手動承認を必須にする] を有効にします。

コメントの手動承認を必須にする設定手順1

コメント欄に投稿します。「これは承認必須の投稿です」というコメントを投稿しました。

コメントの手動承認を必須にする設定手順2

[コメントを送信] をクリックしてもコメントが表示されません。

コメントの手動承認を必須にする設定手順3

管理画面の [コメント] で、対象のコメントが承認状態になっています。[承認] をクリックします。

コメントの手動承認を必須にする設定手順4

[承認を解除] に変化しました。

コメントの手動承認を必須にする設定手順5

コメント欄に戻ってブラウザを更新すると、コメントが表示されました。

コメントの手動承認を必須にする設定手順6

すでに承認されたコメントの投稿者のコメントを承認なしで許可する方法

管理画面の [設定] – [ディスカッション] で [すでに承認されたコメントの投稿者のコメントを許可し、それ以外のコメントを承認待ちに] を有効にします。 なおこの時に、[コメントの手動承認が必須にする]を有効にしていると、そちらの設定が勝ってこの設定が効かないので、気を付けるようにしてください。

すでに承認されたコメントの投稿者のコメントを承認なしで許可する方法1

この状態で投稿者が初めての投稿をすると、ブラウザを更新しても承認待ちとなってコメントは表示されません。ちなみに投稿者はユーザーIDではなく、あくまでコメントの投稿者です。下記画像ですと名前のことです。

想定通りの動きです。

すでに承認されたコメントの投稿者のコメントを承認なしで許可する方法2

続けて同じ投稿者で違うコメントを投稿してみました。が、、、、、投稿が表示されませんでした。何故。。。

私はこの時、コメントと名前(投稿者)だけで投稿していましたが、いろいろ検証してみたところ、どうやら投稿者とメールアドレスを両方入力して、且つ、前の投稿と合致していないとダメなようです。

ですので、「すでに承認されたコメントの投稿者のコメントを許可し、それ以外のコメントを承認待ちにする」がうまくいかないときは [コメントの投稿者の名前とメールアドレスの入力を必須にする] を有効にしておいたほうが良いと思います。

どこかのマニュアルに書いてあるのかもしれませんが、わかりにくいですね。

すでに承認されたコメントの投稿者のコメントを承認なしで許可する方法3

コメント投稿者が Cookie を保存できるようにする

管理画面の [設定] – [ディスカッション] で [コメント投稿者が Cookie を保存できるようにする、Cookie オプトイン用チェックボックスを表示します] を有効にします。

コメント投稿者が Cookie を保存できるようにする設定1

そうすると、コメント欄に「次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。」という設定が現れます。

コメント投稿者が Cookie を保存できるようにする2

このチェックをオンにして投稿すると、クッキーに投稿情報が記録されて、次回から名前、メールアドレス、サイトなどの情報が初期状態で表示されているということです。

これは、同じパソコンをそのまま別の人が利用した際に悪用される可能性が大ですので、私は無効にしておいたほうが良いと思います。

コメントモデレーション

スパムコメントには、複数のハイパーリンクが含まれていることが多いそうです。「コメントモデレーション」を使うとその対策が出来るようです。ハイパーリンクと書いてありますが、コメントの内容、投稿者名、URL、メールアドレス、IP アドレス、ブラウザーのユーザーエージェント、に入力欄に設定したキーワードが入っていると承認待ちと出来るようです。有効にするには、ホワイトリスト形式で1行に1単語記載します。

コメントモデレーション機能

試しに、「あいうえお」というキーワードが1個以上含まれている条件で検証してみました。

コメントに「あいうえお」という投稿をしてみました。投稿後、「管理者の承認待ちです・・・・」というメッセージが表示されます。

コメントモデレーションの検証1

WordPress管理画面[コメント]に、承認待ちのコメントが記録されました。[承認]をクリックします。

コメントモデレーションの検証2

承認後は、[承認を削除]のボタンに代わります。

コメントモデレーションの検証3

コメント欄を更新すると、投稿したコメントが表示されました。

コメントモデレーションの検証4

コメント内で許可されないキーワード

許可したくないキーワードが、コメントの内容、投稿者名、URL、メールアドレス、IP アドレス、ブラウザーのユーザーエージェント、に含まれているとゴミ箱に送ってくる機能です。

試しに、「かきくけこ」というキーワードが含まれている条件で検証してみました。

コメントに「かきくけこ」という投稿をしてみました。投稿後、何も追加されていません。

コメント内で許可されないキーワードの検証1

[コメント] の [ゴミ箱] を確認すると、先程の投稿が捨てられていました。

コメント内で許可されないキーワードの検証2

スポンサーリンク

プラグインAkismetによるコメントのスパム対策

※手順はバージョン 4.1.12で確認しています。

Akismetは、コメント投稿やお問合せフォームのスパムに焦点を当てたセキュリティ対策プラグインです。

コメント欄やお問合せフォームを提供しているホームページには最適はセキュリティプラグインで、この類のプラグインの中では一番と言っていいほど有名です。

導入がとても簡単で、直ぐにコメントのスパム対策を導入することが来ます。そして何よりもうれしいのが、個人利用だったら無料だということです。機能はスパム対策だけに制限されますが、この機能さえ使えていれば何ら問題ありません。

無料で使える条件

有料プランを契約しなければいけない条件は、サイトにアフィリエイトや広告がある、何かを販売している、寄付またはスポンサーシップを求めている、企業または教育機関と関連がある、ようなサイトです。私は先日Google Adsenceを組み込んだので、悲しいことに無料版は卒業しました。泣

無料版の枠内で利用されているかは不定期にチェックがされるようなので、適切なプランを選択するよう気を付けましょう。

尚、非営利団体に対しては非営利キーという無料プランがあり、1か月あたり60,000件までこのプランが使えるそうです。これを超えると一番高いエンタープライズプランにアップグレードする必要があるとのことです。

詳しくは下記参照。

動作環境

Akismetを動作させるには、REST APIが有効である必要があります。セキュリティ上停止している人や、特定のプラグインや機能だけにREST APIの提供を制限している場合は、AkismetがREST APIと使えるようにする必要があります。

お問い合わせフォームプラグインとの連携

Jetpack Contact Form、Contact form 7、Gravity Forms、Caldera Forms、Ninja Forms、Formidable Formsについては、連携機能が提供されているようです。それ以外についてはプラグインの開発者に問合せしてくださいとのこと。

Akismetと連携方法は簡単に下記に載ってますが、わからなければそれぞれのWebサイトのマニュアルを参照してください。

導入手順

[プラグイン] – [新規追加] を開き、検索窓に「akismet」と入力します。「Akismet Spam Protection (Akismet スパム保護)」と表示されている下記がそうです。表示されたら[今すぐインストール]をクリックします。

Akismetの設定1

インストールが完了すると[有効化]ボタンに代わるのでクリックします。

Akismetの設定2

有効化されると下記画面に切り替わります。[Akismetアカウントを設定]をクリックします。

Akismetの設定3

プランの選択画面が表示されるので、一番上の[Get Personal]をクリックします。

Akismetの設定4

次の画面右側で、あなたにとってAkismetはそれだけの価値がありますか?(実際は英語)と心に訴えかけてくるので、笑、心を鬼にして左まで動かして¥0にしましょう。実質価格プラン選択を2回させられます。

Akismetの設定5

今度は画面の左側で、メールアドレス、姓名、Askimetを適用するサイトのURLを入力し、確認事項にチェックしていきます。確認事項は上から下記を表しています。

  • I don’t have ads on my site(私のサイトには広告(アドセンスやアフィリエイトなど)を掲載していません)
  • I don’t sell products/services on my site(私のサイトでは製品やサービスを販売していません)
  • I don’t promote a business on my site(私のサイトではビジネスを宣伝していません)

入力設定したら、[CONTINUE WITH PERSONAL SUBSCRIPTION](個人利用で契約をしますよ)をクリックします。

Akismetの設定6

認証コード入力画面が現れると同時に、設定したメールに認証コードが送られていきます。

Akismetの設定7

認証コード入力画面に認証コードを入力し、[Continue]をクリックします。

Akismetの設定8

認証に成功すると、今度はメールにAPI Key(下記画像赤枠の部分)が送られています。これをテキストエディタなどにメモ保存しておきましょう。Wordpressの入れ替えなどでまた今後使うかもしれないので。

Akismetの設定9

元のWordpress管理画面に戻ると下記画面が現れていると思います。[手動でAPIキーを入力]をクリックします。現れていない場合は、[設定] – [プラグイン] – [インストール済みプラグイン] を開き、Askimetの欄から[設定]を押すと現れます。

Akismetの設定10
Akismetの設定11

API Keyを入力する画面が現れるので、先程メモしたAPI Keyを設定し、[APIキーを使って接続する]をクリックします。

Akismetの設定12

下記画面が現れたら導入完了です。Akismetの設定画面は下記のみです。非常にシンプルです。自分の状況に合わせて設定しましょう。

Akismetの設定13

スポンサーリンク

reCAPTCHAの導入

Googleが提供するreCAPTCHAは強力なスパム対策や悪意のある行為からの防御機能を提供します。 投稿やお問合せ、ログインなどの操作にreCAPTCHAが介入し、高度なリスク分析手法を使用して、人間と悪意のあるボットを区別します。

reCAPTCHAが一体何かわからないという人は、下記の画像のような「私はロボットではありません」のチェックボックスをオンさせられたことはないでしょうか?それがreCAPTCHAです。皆さんよく見るあれです。

reCaptchaの画像v2

最近ではユーザーにわざわざチェックボックスを操作させないでリスクを検知する機能も提供されています。その場合は下記の画像がページの右か左かフォーム内に表示されているはずです。

reCaptchaの画像v3

reCAPTCHAの詳細と導入方法については下記ブログを参照てください。

※作成中

レンタルサーバーのスパムコメント対策

Xserver

Xserverのサーバーパネルには、[Wordpressセキュリティ設定] の中に [コメント・トラックバック制御設定] が用意されています。ここでは、「大量コメント・トラックバック制限」と「国外IPアドレスからのコメント・トラックバック制限」の設定を制御することが出来ます。こちらを有効活用するのも一つの手です。