スパム防御で [/url] を拒否ワードに – スパム対策

2日続けて、スパムコメントが来ました。2つとも違うURL宛のものですが、共通点があります。それを防ぐ方法を書きます。実を言うと2日前までは別の記事「たった5文字でスパムを回避する方法」の設定を有効にしていました。2日前にそれを解除した途端に、今回のスパムは来ています。

実を言うと2日前までは別の記事「たった5文字でスパムを回避する方法」の設定を有効にしていました。

それは「href=」という禁止ワードを作ることです。

コメントのやりとりで、どうしてもhref=という文字を入れて説明する必要があったので、その禁止ワードを削除しました。2日前にそれを解除した途端に、今回のスパムは来ています。ですので、コメントにHTMLを書く必要のないブログでは「たった5文字でスパムを回避する方法」の設定も有効にすることを、おすすめします。

追記:「たった5文字でスパムを回避する方法」の設定は必ず有効にしないと、手入力で突破されます。詳細は別の記事「スパムを防ぐにはhref=の5文字と[/url]の6文字を禁止に!」にまとめました。

2日続けて、スパムコメントが来ました。2つとも違うURL宛のものですが、共通点があります。それを防ぐ方法を書きます。

書き込まれたスパムコメントは下のものです。文字化けをしているので、一見自動送信されたもののようですが、違うかもしれません。なぜなら、文字化けしたそのURLが実在するからです。

スパムコメント

文字化けしたURLをブラウザで見てみると、ちゃんとページが開かれます。これは、URLが文字化けしているのではなく、ファイルの名前が文字化けしているのです。その、文字化けしたファイルの名前を指定しているのでページが開かれています。

スパムサイト

情報不足で判断がつきませんが、これは手動で入力しているスパムの可能性があります。なぜかというと、手動でスパムを書き込んでいるデータを確認したという情報をもらったからです。

昨日と今日の2つのスパムは、同じ記事に書き込まれました。偶然かもしれませんが、同じ人物が書き込みリストを元にして書き込んでいるのかもしれません。

そして、それをしているのは恐らく日本語の読み書きが出来ない相手だと思われます。

このスパムの特徴

昨日と今日のスパムには共通点があります。まず、本文がどちらも英語である事。リンク先のURLは違いますが、どちらも同じように投稿者名が文字化けしています。そして、どちらも同じタグを使っています。

今日来たスパムコメント
今日来たスパムコメント

昨日来たスパムコメント
昨日来たスパムコメント

この開始タグ[url=http://…]と、終了タグ[/url]のセットは、今もっとも流行っているブログソフトWordPress(ワードプレス)のプラグインが使っているタグです。

誤解があるといけないので書いておきますが、WordPressも被害を受けている側です。

このスパムはWordPressも、それ以外のブログも無差別に攻撃しています。そのためにWordPress用のリンクタグと、その他のブログのリンクタグ(aタグ)を両方使って、どちらかでリンクが張られるように考えています。

このブログを書いているファンブログは、またそれとは違う独自タグなので、コメント中にはリンクが張られていませんが、送信者名でリンクが出来ています。

防御方法

ですから、WordPress以外では使っていないタグを拒否ワードにすれば、このスパムは防げます。

開始タグ[url=http://…]は、http://の後のURLが毎回変わりますが、終了タグ[/url]は毎回かならず同じです。ですので、[/url]を禁止ワードに設定してください。

禁止ワードは [ と ] も含む [/url] の6文字(半角アルファベット)です。

ファンブログでのスパムフィルターの設定方法は、別の記事「買取コレクターからのコメント拒否方法」に書いてあります。

同一ユーザーからの短時間での連続投稿を拒否する

先日、ガブリエルさんのブログ「イタリアンな日々」が1日に3000ものスパムトラックバックを書き込まれました。そういった大量のスパムを防止するために、ファンブログのスパムフィルターには「同じユーザーからの連続した投稿を禁止する」という設定があります。これを有効にしておくこともおすすめします。

スパムフィルター

スパムからの攻撃が多いとアクセスが出来なくなる

昨日(2013年6月19日)から、ファンブログはアクセスがしにくくなっています。これも、スパムが原因の可能性があります。

これは、サイト管理者でないとわかりませんので推測ですが、スパムが大量に送られてくることにより、アクセス過多で、一般ユーザーも接続出来ないということです。一般ユーザーには対策のしようがないのですが、もしスパムが原因なら困ったものです。

サイト管理者が悪く思われるといけないので、書いておきますが、アクセス過多は管理者でも防げません。よって、スパムによるアクセス過多が原因であるのなら、サイト管理者の怠慢ではありません。あしからず。

スパム撃退スクリプト – URL抽出阻止

2014年1月22日にA8.netのファンブログはSeesaa Blogのシステムをベースにして生まれ変わりました。よってファンブログ関連の記事は今では当てはまらない可能性があります。新しいファンブログのカスタマイズは別ブログ「ファンブログ テック」で詳しく書いていますので、そちらをご覧ください。

最近、スパムコメントやトラックバックが多くてウザいと言っている方がたくさんいます。

そこで、スパム対策スクリプトを書いてみました。このブログでは、意図どおりに動いています。

当ブログにスクリプトを設置したのは2013年6月15日午前0時ですが、今のところスパムはゼロです。ただ、このブログには元々スパムが少ないので、スクリプトの成果が出ているのかどうかは判断できません。

追記:

2013年6月18日04:09、2013年6月19日10:46、2013年6月20日15:04の3回、コメントスパムが一件ずつありました。ただし手入力の可能性があります。(*注1
(そのコメントのキャプチャを見るにはここをクリック)

スパムコメント

スパムコメント

手入力によるスパムの対策記事は「スパムを防ぐにはhref=の5文字と[/url]の6文字を禁止に!」です。

スパム送信側が、このページで公開したソースを読めばブロックは破られてしまいます。なので、ソースは非公開でこっそり使うのが正しいですが、あえて公開します。

詳しいことは後述しますが、本来、スパムの対策をJavaScriptで書くのは無意味です。ですが、あるスパムはHTMLを取得して解析し、コメントやトラックバックの送信先アドレスを抽出しているのが間違いありません。それで、この対策スクリプトが有効に作用するかどうかを探りたいと思います。

このスクリプトを使用中の、その他のブログ

イタリアンな日々
設置日:2013年06月15日
2013年6月17日トラックバックスパムあり(*注2
2013年6月17日以降のスパム:0
goods and life +
設置日:2013年06月18日
2013年6月18日以降のスパム:0
楽して稼ぎたい~お小遣い稼ぎ情報局~
設置日:2013年06月18日
2013年6月18日以降のスパム:0

*注2:2013年6月17日 「トラックバックでスパムフィルターが有効であることを知らせる」を無効にしないと、URLが読まれます。

このスクリプトはファンブログ専用です。ただ、ロジックを理解していただければ、ファンブログ以外でも改変して使えます。改変はご自由にどうぞ。

ちなみに、これを導入すると、JavaScriptが無効なブラウザからはコメントが送れなくなります。しかし、画像認証を使っていてもそれは同じです。

送信先URLを抽出できなくする

今回書いたスクリプトがやっているのは、URLの隠蔽です。URLを隠すことで抽出できなくします。

ファンブログのスキンに、次の2ヵ所があります。

{$BlogEntryTrackbackLink$}
{$BlogCommentPostUrl$}

{$BlogEntryTrackbackLink$}と書かれた場所には、トラックバックURLが書き込まれます。

同様に{$BlogCommentPostUrl$}には、コメント送信先URLが書き込まれます。

今回のスクリプトは、それを以下の手順で処理します。

  1. 2つのURLを該当個所に書き込まず、別の場所に書いておいて、そのHTMLをサーバーが送信する。
  2. HTMLをブラウザで読み込んだ後、別の場所に書かれているURLを正規の場所に書き直す。

スパム側はスパム側で、別のスクリプトを使ってURLを抽出しようとするでしょう。しかし、あるはずの場所にURLがなければ読み込めないと思います。

スクリプト導入の前処理

変更が必要なスキンは「1記事」だけです。「1記事」のスキンの2ヵ所を変更します。

まず{$BlogEntryTrackbackLink$}を削除します。結果は下の様になります。

変更前

<div id="trackbackText">
この記事へのトラックバックURL<br />
<SpamFilterTrackbackNotice><a>{$BlogEntryTrackbackLink$}</a>
</SpamFilterTrackbackNotice><br />
</div>
変更後

<div id="trackbackText">
この記事へのトラックバックURL<br />
<SpamFilterTrackbackNotice><a></a>
</SpamFilterTrackbackNotice><br />
</div>

次に{$BlogCommentPostUrl$}javascript:void(0);に変更します。

変更前

<div id="commentForm">
<BlogEntryIfAllowComments>
<BlogEntryIfAllowPostComments>
<h3 id="commentTitle">コメント</h3>
<div class="text">{$CommentErrMsg$} 
<form method="post" name="WriteCommentForm" action="{$BlogCommentPostUrl$}">
<table border="0" cellspacing="0" cellpadding="0">
(以下略)
変更後

<div id="commentForm">
<BlogEntryIfAllowComments>
<BlogEntryIfAllowPostComments>
<h3 id="commentTitle">コメント</h3>
<div class="text">{$CommentErrMsg$} 
<form method="post" name="WriteCommentForm" action="javascript:void(0);">
<table border="0" cellspacing="0" cellpadding="0">
(以下略)

これであるハズの場所に、URLはなくなりました。

スクリプトの導入

URLを本来の場所に書き戻すために、今回作ったスクリプトはこれです。スパム送信側は、これがわからないのでURLは見つからないはずです。

<!-- スパム撃退スクリプト ここから -->
<script type="text/javascript"><!--
(function(){
	var tb=document.querySelector('div#trackbackText a');
	var form=document.querySelector('div#commentForm form');

	if(tb){
		tb.innerHTML='{$BlogEntryTrackbackLink$}';
	}

	if(form){
		form.action='{$BlogCommentPostUrl$}';
	}
})();//-->
</script>
<!-- スパム撃退スクリプト ここまで -->

このスクリプトを、そのままコピーして「1記事」スキンの最後の方にある{$BlogAccessCounter$}の上に追加します。スクリプト1行目の<!– スパム撃退スクリプト ここから –>と、最後の<!– スパム撃退スクリプト ここまで –>は、なくてもいいのですが、後で削除や書きかえを行なう際に目印になるので、このまま書き込んでください。

<div id="footer">
</div><!-- /footer -->

</div><!-- /container -->
ここにスクリプトを追加
{$BlogAccessCounter$}
</body>
</html>

スクリプトの赤字部分trackbackTextcommentFormは、スキンのidと照合して、同じ名前かどうかを確かめてください。もし名前が違うなら、スキンのidと同じ名前に書きかえて使ってください。

“スパム撃退スクリプト – URL抽出阻止” の続きを読む

スパム対策「コメント・トラックバックURLにランダムな認証キーを使う」は常にオン

2014年1月22日にA8.netのファンブログはSeesaa Blogのシステムをベースにして生まれ変わりました。よってファンブログ関連の記事は今では当てはまらない可能性があります。新しいファンブログのカスタマイズは別ブログ「ファンブログ テック」で詳しく書いていますので、そちらをご覧ください。

スパムを送りつけてくる側は、いちいちあなたのページを開いたりしません。ページを見ないでも、コメントやトラックバックの送信先URLがわかれば、そこに直接スパムを送ります。そして、そのURLは規則に基づいて予測できるのです。

では、どうやって対策すればいいでしょう?

予測できるURL

たとえば、この記事のURLは「http://fanblogs.jp/ayzfqir5/790/0」です。

これは、「http://fanblogs.jp/」に「ユーザー」と「記事番号」を加えたものです。このブログの「ユーザー」は「ayzfqir5」で、「記事番号」は「790」なので、URLは「http://fanblogs.jp/ayzfqir5/790/0」となります。

http://fanblogs.jp/ユーザー/記事番号/0

トラックバックURLも、同じように「http://fanblogs.jp/ayzfqir5/tb_ping/790/」となります。「http://fanblogs.jp/」の後に「ユーザー」+「tb_ping」+「記事番号」です。

http://fanblogs.jp/ユーザー/tb_ping/記事番号/

これは、非常に予測しやすい。というか、完全なパターンに基づいて、予測できます。

だから、この記事の次は、確実にURLが「http://fanblogs.jp/ayzfqir5/791/0」であり、
トラックバックURLは「http://fanblogs.jp/ayzfqir5/tb_ping/791/」になるとわかります。

つまり、1回コメントが送れれば、他の記事へのコメントはURLを予測して送れてしまうのです。

同様に、トラックバックも1度送れれば、URLを予測して、他の記事にも送れます。

「コメント・トラックバックURLにランダムな認証キーを使う」の設定は常にオンに

スパムを1度受信すれば、いくつも立て続けにやってくるのは、予測に基づいているからです。URLがひとつわかれば、後は予測して送信すればいいわけで、何もひとつひとつのページを開く必要はないです。

それを避けるために、URLに不規則な文字列を追加するのが、「コメント・トラックバックURLにランダムな認証キーを使う」という設定となります。

この設定をONにすると、先ほどのトラックバックURLが「http://fanblogs.jp/ayzfqir5/tb_ping/790/」ではなく、次のように変わります。

http://fanblogs.jp/ayzfqir5/tb_ping/790/L6bYMCg9m-A0Sb6nFlZEuPoJPFEA

URLの最後に、ランダムな文字列が追加されました。この文字列には規則性がありません。だから毎回、どんな文字列が追加されるかはわかりません。それで、記事のトラックバックURLは予測できなくなります。コメントの送信先URLも同様に予測不可能です。

この設定は、正しいキーワードを手入力しないとコメントを受け付けない「画像認証」と同じだけの効果があります。

設定方法(ファンブログの場合)

管理パネル

ファンブログの管理画面にログインして、左のパネルから「ブログの設定」をクリック。

続いて「スパムフィルター」をクリック。

すると、画面の右側が下図のように変わるので、オプションの上から2つ目
コメント・トラックバックURLにランダムな認証キーを使う」にチェックを入れる。

以上を設定してから、保存すれば、トラックバックURLがランダムなものに変わっています。

スパムフィルター設定


サイト確認しましたがスパムです「本とに古い感じだなぁ~でも面白そう~」

下のは完全なスパムです。念のため、サイト確認しました。

日時 2013年03/20(水) 18:11
投稿 美智子
URL http://koseya.com
IP 74.125.178.81
本 文 本とに古い感じだなぁ~でも面白そう~

スパムかどうか迷ったら?

スパムと気づかずに残してしまうのは、相手の思うツボですよ!その仕組みは「褒め殺しスパム攻撃の秘技!」にまとめてあります。

このスパムはアメリカ合衆国のサーバー経由で送信されました。相手のIPから情報を調べる方法は「スパムの発信元を調べる方法」をご覧ください。

てか、これGoogleやん。Googleのサービスを使って送信か?

[Querying whois.arin.net]
[whois.arin.net]
#
# Query terms are ambiguous. The query is assumed to be:
# ”n 74.125.178.81”
#
# Use ”?” to get help.
#
#
# The following results may also be obtained via:
# http://whois.arin.net/rest/nets;q=74.125.178.81?showDetails=true&showARIN=false&ext=netref2
#
NetRange:	 74.125.0.0 - 74.125.255.255
CIDR:	 74.125.0.0/16 (マスク範囲)
OriginAS:
NetName:	 GOOGLE
NetHandle:	 NET-74-125-0-0-1
Parent:	 NET-74-0-0-0-0
NetType:	 Direct Allocation
RegDate:	 2007-03-13
Updated:	 2012-02-24
Ref:	http://whois.arin.net/rest/net/NET-74-125-0-0-1

OrgName:	 Google Inc.
OrgId:	 GOGL
Address:	 1600 Amphitheatre Parkway
City:	 Mountain View
StateProv:	 CA
PostalCode:	 94043
Country:	US   → (アメリカ合衆国)
RegDate:	 2000-03-30
Updated:	 2011-09-24
Ref:	http://whois.arin.net/rest/org/GOGL
OrgAbuseHandle:	 ZG39-ARIN
OrgAbuseName:	 Google Inc
OrgAbusePhone:	 +1-650-253-0000
OrgAbuseEmail:	 [email protected]
OrgAbuseRef:	http://whois.arin.net/rest/poc/ZG39-ARIN
OrgTechHandle:	 ZG39-ARIN
OrgTechName:	 Google Inc
OrgTechPhone:	 +1-650-253-0000
OrgTechEmail:	 [email protected]
OrgTechRef:	http://whois.arin.net/rest/poc/ZG39-ARIN
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at:	 https://www.arin.net/whois_tou.html
#

“サイト確認しましたがスパムです「本とに古い感じだなぁ~でも面白そう~」” の続きを読む

ぐるなびにスパムコメントの公開質問状

ぐるなび食市場アフィリエイト事務局御中

私「ここにブログの名前を入れます」というブログを運営しております。
このブログのdescriptionは「HTML、CSS、JavaScript、スパムと悪徳商材の対策」です。

最近御社の岩井氏より、2回に渡って同じ内容の書き込みが当ブログになされました。

1回目は2013年03月04日(月) 18:47
2回目は2013年03月18日(月) 21:30です。

当方が「ぐるなび食市場アフィリエイト」に申し込まない限り、何度も書き込みがなされるのなら、
それはスパムではないでしょうか。

1回目の内容はどういう記事に書き込まれたのか岩井氏は、ご理解できていますか?
その記事を現在公開していない理由はお分かりでしょうか?

「ブログ内容を読ませていただき」という記述が私には信じられません。

また、2回目のコメントも「はじめまして。」という書き出しの時点で、
「ああ、前回の書き込みを覚えていないんだな」と感じられます。

以上を踏まえると、私には岩井氏が「ブログ内容」をまったく読まずに、
無差別にコメントを送っているように感じられます。

実際はお読みになっていたのだとしても、
そう思われない時点で書き込んだことは失敗にならないでしょうか。

当ブログは過去に次のような記事を公開しています。特定個人を対象にした記事も書いておりますが、
御社に対して行動を起こさない場合、ダブルスタンダードとなってしまいます。

「あんちゃんからのスパムコメント削除モジュール」 http://fanblogs.jp/ayzfqir5/archive/634/0
「買取コレクターからのコメント拒否方法」 http://fanblogs.jp/ayzfqir5/archive/489/0
「スパムをエキサイトに問合せ」 http://fanblogs.jp/ayzfqir5/archive/102/0

このメールと同文にて、当ブログに「ぐるなびにスパムコメントの公開質問状」という記事を公開しております。

つきましては、コメントを送られてきた岩井氏一個人の見解ではなく、
御社の見解として、ご回答を同記事のコメント欄にいただけますようお願いいたします。

同記事のコメント欄は仕様で3000文字を越えたあたりで文字数が制限されますが、
その場合は、コメントを複数に分割なさればよろしいかと思います。

以上、よろしくお願いします。

ここにブログの名前を入れます
「ぐるなびにスパムコメントの公開質問状」

記事のURL http://fanblogs.jp/ayzfqir5/archive/673/0