半角のみの書き込みを許さないCGI
ここ1, 2年で掲示板をかなり修正しています。
まず、禁止ワードを含む書き込みをチェックし、
禁止ワードを含む場合にはエラーを返すようにしました。
まず、禁止ワードを含む書き込みをチェックし、
禁止ワードを含む場合にはエラーを返すようにしました。
禁止ワードは、1行1ワードの正規表現で
別ファイルに登録するようにしました。
追加や修正、削除は、禁止ワードデータファイルに
正規表現を書く、削除する事で可能になります。
別ファイルに登録するようにしました。
追加や修正、削除は、禁止ワードデータファイルに
正規表現を書く、削除する事で可能になります。
これで、しばらくの間は、スパムなども無く
無事だったのですが、
最近、海外からのスパムが増えてきました。
無事だったのですが、
最近、海外からのスパムが増えてきました。
そこで、半角文字のみの書き込みを許可しないように
修正しようと思います。
修正しようと思います。
色々と考えるのは面倒なので、
正規表現でベタにチェックするようにしました。
正規表現でベタにチェックするようにしました。
if ( $text !~ /[^\w\s\!\"\#\$\%\&\'\(\)\*\+\,\-\.
\/\:\;\<\=\>\?\@\[\\\]\^\`\{\|\}\~]/ )
{
error(7); # 半角文字のみのチェック
}
\/\:\;\<\=\>\?\@\[\\\]\^\`\{\|\}\~]/ )
{
error(7); # 半角文字のみのチェック
}
errorはサブルーチンで、エラーメッセージをHTML出力して処理を終えます。
引数の7は出力メッセージ配列の添字です。
引数の7は出力メッセージ配列の添字です。
これで、一応半角文字のみの書き込みをブロックできたのですが、
この時考えていた、中国語やロシア語のようなマルチバイトで、
文字化けするような文字の場合にどう対処するか。
という問題が解決していません。
この時考えていた、中国語やロシア語のようなマルチバイトで、
文字化けするような文字の場合にどう対処するか。
という問題が解決していません。
今現在は、
そもそも、http://で始まる文字列をリンクに置き換えているので、
リンク自体に問題は生じませんし、タグの使えない掲示板なので、
これでしばらく様子を見てみようと思います。
a[ ]+href[ ]*=
として、リンクタグを含む、書き込みを禁止ワードとしてブロックしています。そもそも、http://で始まる文字列をリンクに置き換えているので、
リンク自体に問題は生じませんし、タグの使えない掲示板なので、
これでしばらく様子を見てみようと思います。
| 固定リンク
« インストーラ | トップページ | 半角/全角の変換 »
「Perl」カテゴリの記事
- LWP::Simpleのmirrorをgetに変更した。掲示板監視スクリプト(2014.01.25)
- XMLRPC::Liteで更新Ping(2009.05.29)
- 楽天APIで自動アフィリエイトリンク作成(2009.05.19)
- モジュールをインストールしてみる(2008.01.22)
- Perlでコールバック サブルーチンの引数としてサブルーチンの参照を渡す(2007.11.26)
この記事へのコメントは終了しました。
コメント