こんにちは、斉藤です。
6月に入り、北海道もかなり暑くなってきております。今週は30度を越える日も多く、北海道が一番暑い日もあるみたいです。なんてレアケースなんでしょう。。。そしてついについにW杯が始まります!!!日本にあまり多くは期待していませんが、各国代表の試合を見れるのは嬉しくてたまりません!寝不足が続きそうだなぁ。。笑
こんにちは、斉藤です。
6月に入り、北海道もかなり暑くなってきております。今週は30度を越える日も多く、北海道が一番暑い日もあるみたいです。なんてレアケースなんでしょう。。。そしてついについにW杯が始まります!!!日本にあまり多くは期待していませんが、各国代表の試合を見れるのは嬉しくてたまりません!寝不足が続きそうだなぁ。。笑
さて本日は、スパムメールの対策をPHPでやってみたのでメモとして残しておきます。背景としましては、問い合わせページにqq.comから問い合わせ連発をくらったというのがありました。やったこととしましては同一IPから問い合わせがa分以内に1回来る度にカウントを1増やす、そのカウントがb回になったらアクセス遮断という形です。(aとbは状況に合わせて変更可)至ってシンプルなのですごく簡単にできます。
DBで管理するのでテーブルを作成します。必要なカラムはIPを保存するものとカウントを入れるものと時間を入れるものくらいであとはお好きにという感じですね。PHPの方は問い合わせページのシステムとprependに組み込みました。まず問い合わせページは初回問い合わせはサーバ関数でIPを取得しDBに保存、カウントも1が入り、保存時間が登録される感じです。例えば10分以内(上記のa)でカウントが1増える設定なら初回の保存時間と今の時間の差を見てif文でカウントを増やすようにしました。prependの方では例えば最大カウント数(上記のb)を5回に設定しているのであれば、DB接続しカウントを見て5回であればheader関数で503に飛ばすというようにしました。
ロードバランサ側やpostfix側、ipfwなど色々な箇所でIPブロックはできると思いますが、PHPで簡単にやってみたという内容でした。