掲示板SPAM対策
掲示板へのスパム(SPAM)対策メモ。
掲示板改造支援サイト。
"空"のブログです。 投資・読書など。
ActivePerlがインストールされてて、WEBに出られるのは前提とする。
ppm install Test-Unit
cd ターゲットのあるディレクトリバッチを組んどくと便利そうだ。
TestRunner.pl target.pm
以上!
井上雅央の豊富な「顔面こすり」バリエーションに感動していたら、管理しているサイトで不具合を見つけてしまった。
内容は、フォームメールを利用してスパムメールを送れてしまう、というもの。
PHPで関数マニュアル見ながら作って、「動いた動いたおっけー!」と思っていたが、人様に迷惑をかけるようなものになってしまっているとは・・・。
以下は、その道の人にとっては、阪神江草のテーマ曲が「怒りの獣神」なのと同じくらい、常識だろうが、僕と同レベルの「WEBプログラミング、趣味でときどきだけやりまんねん。」な人のためにメモ。
(適当にググって「多分こうゆうことだろう」というレベルなんで、あんまし信用しないでください。)
本文部分の入力エリアの頭にBCCヘッダをごっそり付けて、フォームメールの送信を行うと、普通にガシガシBCCできてしまう。
これを防ぐには、入力データから'\n'を取っ払ってからsendmailに渡す。
('\n'がないと、ヘッダとして区別されない)
また、保険として(?)文字列の長さ制限と、','の禁止をすればいい。
僕は、「なんか最近変なメールがきてるな~」と思って気がつきました。
自分が設置したフォームメールを使って、謎なメールが来ている人は、フォームメールのセキュリティホールを疑ってみてください。
知らない間に、たくさんの人に迷惑をかけているかもしれません。
試してみればわかることやし。
燃やせ燃やせいーかりをもやっせー・・江草のキャラにあってないよな~。
プロパティへのgetやsetをしているだけなのに、ガシガシ再帰し続け、いつの日かStackOverFlowExceptionが投げられるコード。
public class Person
{
private string name = string.Empty;
public string Name
{
get
{
return this.Name;
}
set
{
this.Name = value;
}
}
public Person()
{
//
// TODO: コンストラクタ ロジックをここに追加してください。
//
}
}
上記のNameプロパティに、setしてもgetしても、StackOverFlowExceptionがthrowされる。
原因は、大文字小文字のスペルミス。
アホみたいなミスだが、マルチスレッドなアプリでやらかしてしまうと、発見するまでも結構な時間がかかることも。
細かい単位のテストをしっかりやってれば大丈夫なはず・・・。 でも、忘れかけたころに、またやらかしてしまう。
藤○(神)のバント失敗よりは確率が低いだろうか。