ツッコミSPAMくらった
RSSリーダーで購読されているかた、すみません。
応急処置
まずは被害拡大を防ぐのが第一。
- SPAMを非表示にする: 設定画面で「ツッコミの表示」を非表示に設定。ツッコミをまとめて消すまでの処置。
- 新しいSPAMを防ぐ: 1日あたりのツッコミ最大数を最大0件に設定。これで新規ツッコミはできなくなる。
本当は生成されたRSS(index.rdf)も削除したいんだけど、Webからは消せないみたい。
原因の特定
次に現在の状況を把握する。
- tDiary は最近 2.2.1 へバージョンアップした。
- 130日以上前の日付けのツッコミはjavascriptで表示するようにしていた。Sleipnirのセキュアモードでフォームが表示されないことを確認。
- メールアドレス欄は非表示にしている。Sleipnirでスタイルシートを無効にするとメールアドレス欄が表示される。
- 130日以上前の日記へもSPAMが来ている。
- SPAM にはメールアドレスが含まれている。
ここで原因を特定。tDiaryを2.2.0から2.2.1へアップデートした時に、フィルタをコピーするのを忘れている… orz なので、メアドが入力されたツッコミをSPAMと判定していなかった模様。
分かったこと←いまここ
JavaScriptを解釈するSPAMは存在する← 勘違いでした。フォーム経由じゃなくてダイレクトでPOSTしているみたい
対策(回復)← いまここ
- ツッコミSPAMを削除する
- コピーが漏れていた「メアドが含まれていたらSPAMとみなすよ」フィルタを追加する → フィルタじゃなくてWebから設定できた
- RSS (index.rdf) を再生成する
ここ2日に更新されたツッコミファイルから特定の文字列を削除するコマンド。 でも、その月のコメントがすべて対象になるのでちょっと面倒。 コメントと日付の両方で選択できるといいんだけど。
find . -name '*tdc' -ctime -2 | xargs ./tdiary-comment-clean 'free' > delete.txt
対策(予防)
- 今後のアップデートでもフィルタのコピーが漏れる可能性あり → あとで考える。フィルタ選択プラグインが使えるかも?
- JavaScript のエラーが発生しているので調べる
対策案
- JavaScriptでツッコミフォームを表示するときに、すぐに表示するのではなく一定時間待ってから表示するのはどうだろ?