最近、久しぶりにWeb上に掲示板を設置したのですが、レベルが低い上に粘着なスパムがよく来て鬱陶しいです。
昔は自作のスクリプトで掲示板を動かしていたのですが、今回は既存のものを利用しました。既存のものは優秀なのですが、その分知れ渡っているのでスパムもそういうのに最適化されてしまっているんですよね。
おかげで日本国内からのスパムが多いのが特徴(日本製のものであるため)
しかしログを見てみると何故かスパムさんHTTP/1.0でアクセスしてきます。
何故だかわかりませんがPerlかなんかで書かれたスパムスクリプトでもあるんですかねぇ。。
今時の普通のブラウザならHTTP/1.1でPOSTしてくると思うのでHTTP/1.0かつPOSTメソッドの場合にdenyするようにしてみました。
(一部クローラなどがHTTP/1.0でアクセスしてくるみたいなのでPOSTのみ制限)
例えば以下のような設定で出来ます。
<Limit POST>
order allow,deny
SetEnvIf Request_Protocol "^HTTP/1\.0" http_1_0
allow from all
deny from env=http_1_0
</Limit>
本当はスクリプト上で判断してやりたかったのですが、直接環境変数などからHTTPバージョンを取れないようだったので面倒なのでApache側で制限しました。
今のところうまく行っているようです。
(スパム側がリクエスト出す部分を1文字変更したらもう意味なくなるのですけど・・・)