アカウント名:
パスワード:
Apache::Requestモジュールの代わりにApache::TaintRequestモジュールを使えば、フォームのインプットから自動的にや"やその他アヤシゲな文字をエスケープしてくれる
入力に対してフィルタリングするのかな?と読めたのですが、そうではなく、出力時にエスケープ処理を施すのですよね。で、全部をエスケープしてしまうと、タグ自身を書き出す部分で困るので、Perlのtaintモード機能を活用して、入力に依存している変数をprintするときだけエスケープするようにしたと。
この方法では次の問題が考えられるのではないでしょうか。
use Apache::TaintRequest; my $apr = Apache::TaintRequest->new(Apache->request); my $text = $apr->param('text'); $r->content_type("text/html"); $r->send_http_header; $r->print("You entered ", $text); $text =~ s/[^A-Za-z0-9 ]//; $r->print("You entered ", $text);
ということで(説明になってないか…)、入力をフィルタリングしてから変数に格納する、というのがこのモジュールの機能です。 既にデータベースに格納されているものに対しては対策になら
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
普通のやつらの下を行け -- バッドノウハウ専門家
この対処法は本当に使いものになるのか? (スコア:3, すばらしい洞察)
入力に対してフィルタリングするのかな?と読めたのですが、そうではなく、出力時にエスケープ処理を施すのですよね。で、全部をエスケープしてしまうと、タグ自身を書き出す部分で困るので、Perlのtaintモード機能を活用して、入力に依存している変数をprintするときだけエスケープするようにしたと。
この方法では次の問題が考えられるのではないでしょうか。
Re:この対処法は本当に使いものになるのか? (スコア:1)
ということで(説明になってないか…)、入力をフィルタリングしてから変数に格納する、というのがこのモジュールの機能です。
既にデータベースに格納されているものに対しては対策になら
Re:この対処法は本当に使いものになるのか? (スコア:1)
下の方にApache::TaintedRequestそのもののコードがあって、これを見ると、どうやらprintメソッドをオーバーライトして、そこで除染しているようです…失礼しました。
# ちゃんと全部読み直してから反応せい>自分