検索結果(Javascript)
しかし、「とある自由人の黙示目録」と検索するとこうなる。
検索結果
どういうことなの・・・(追記 2010/09/11: ちゃんと1ページ目に上がっているのを確認)。まぁ、どうでもいい話はともかく、本題。
ユーザーにマルウェアや有害な情報を与えるサーバー(ウェブサーバー)は、
禁止ワード避けの為に複数のエイリアス(別名)を持っています。
その為、いわゆる禁止URIを設定するだけでは簡単にすり抜けてユーザーに有害を与えてしまいます。
そこで私が作ったのは、このHarmful.pmというPerl Module(かなり汚いので潔癖症の方は注意)。
サーバー名とIPアドレスをアンパックしたものをファイルに保存しておき、
指定されたサーバー名又はそのサーバーのIPアドレスがファイルに存在する場合ブロック、といった感じ。
有害か判定するには、"Harmful::judge" にファイル名とサーバー名のリストを与える。
use Harmful; local $, = "\n"; print Harmful::judge 'Harmful.txt',$msg =~ m{://([\w\.\-]+)}g;
"Harmful::judge" は、同じサーバー名が見つかれば関連付けされているIPアドレスを更新し、
同じIPアドレスが見つかれば新しくサーバー名とIPアドレスを追加します。
新しくサーバー名とIPアドレスを確実に追加するには、"Harmful::add"にファイル名とサーバー名のリストを与える。
use Harmful; use FormParse; my $form = FormParse::new {}; Harmful::add 'Harmful.txt',@{$form->method('add')};
サーバー名を削除するには、"Harmful::lose" にf(ry
use Harmful; use FormParse; my $form = FormParse::new {}; Harmful::lose 'Harmful.txt',@{$form->method('lose')};
注意するのが、「サーバー名」のみを削除するという点。
上のコードでサーバー名を削除しても、IPアドレスが同じだろうが別のサーバー名は残る。
自分もすごく悩んだのですが、今まで収集した別のサーバー名が一気に削除されるのが悲しいのでこういう仕様にしました。
そして行数を指定した数値に合わせるのが "Harmful::trim"。
use Harmful; Harmful::trim 'Harmful.txt',1000;
それと中で使われている "gethostbyname" 関数は遅いのでコメント等に入力できるURIは制限しておくべき。
これで説明は終わりです。他のサブルーチンは自分で解析して下さい。そもそもこれ、使う人いるのかな?
0 件のコメント:
コメントを投稿