フォーム・ファイルなどの外部から与えられたデータを、そのままコマンド引数などに使うのはすごく危険で、
使い方を間違えると重大なセキュリティーホールになってしまう事もあります。
そういった危険なデータを調べる(対策をとる)事を「汚染チェック」などと言います。
今回は形態素解析ツールを使う部分で汚染チェックが必要になると思いますが、
具体的にどんなソースを書けば良いのか解からない人の為に簡単なサンプルを用意しておきます。
プログラムの文字コードはEUC-JPで、CGIとして実行できブラウザから実行結果を確認できるように書いてます。
本当なら、特定の文字をエスケープ記号でエスケープさせるのが正しい対策なのですが、
危険なパターンを全部調べるのが面倒臭いので、汚染文字列に含まれている半角のアルファベット・数字・記号を全角に変換するだけという適当な対応です。
はっきり言って、全角ならコードを実行出来ないだろうと言う安易な考えからです。
このコードは
Jcode.pmがインストールされている環境でしか動きません。
Jcode.pmを使わない場合、
jcode.plを代用にする事も出来ます、以下の変更を行ってみて下さい。
3:use Jcode;
↓
require "jcode.pl";#jcode.plを置いたパス
に変更
24:$str = Jcode->new($str)->h2z->tr($tr1, $tr2);
↓
&jcode::h2z_euc(\$str);
&jcode::tr(\$str, $tr1, $tr2 );
に変更
上記2箇所の変更でjcode.plの代用が出来るはずです。
jcode.plだと、ユニコードが使えないので使いづらいかもしれません、素直にJcode.pmを使うことをお勧めします。
情報やソースのご利用は各自利用者の責任でお願いします。
投稿者 Lanタソ : 2004年08月29日 14:15
|
トラックバック