Spam対策、よーーく考えると
http://coreblog.org/jp/misc/spam-spam-spam
でCAPTCHA認証に投票したのですが、今回の攻撃はaddCommentメソッドに直接アクセスしているものでした。
で、わたしはCAPTCHA認証がよさげだ、と思っていたのですが、結局ソースをいじりこんな対策をしてみました。
Entry.py内のaddComment冒頭3行を書き換えました。
def addComment(self,title,author,body,passwd,moderated= 1,email="",url="", \ created="",REQUEST=None): time = str(DateTime())[:18] if (self.allow_comment != comment_open) or (time != passwd): #This entry does not allow adding comment raise RuntimeError,"This entry is closed for adding comment."addCommentProxyはこんな感じ
REQUEST = container.REQUEST passwd = str(DateTime())[:18] return context.addComment(title,author,body,passwd,email=email,url=url,REQUEST=REQUEST)comment_formもsubmitボタンを以下のように書き換え
<input type="submit" name="methods/addCommentProxy:method" value=" POST " />CAPTCHAのかわりにパスワードをサーバ時間にしてみました。
これだとaddCommentに直接アクセスするにもサーバ時間を10秒単位で追わなければならないのでかなり攻撃者には面倒なことになりのでは?と考えました。あさはかでしたらご指摘ください。ぜひともお願いします。
もちろんCAPTCHA認証も組み合わせてより堅固にするのが最良でしょう。
今回COREBlogユーザがそれぞれのスパム対策をしたことにより、攻撃者に対して一様なやり方ではコメントを投稿できないと知らしめたことになり、非常に有意義であったのでは、と思います。多様性が種を強力なものにするという一例でしょうか。