WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:sendmail: 危険かも、、。

dindi[MAIL][URL][WriteDate : Wed Apr 5 20:58:47 2000]

講座の方で

if (open(MAIL,"| $sendmail $mailto")) {

というのがありますが、これはキケンだと最近買った本
(インプレスの Black Book シリーズ。手元にないので
正確な書名がわかりません。すいません)にありました。
(ぼくも上のようにしてたのをあわてて直しました ^^;;)
 
上のようにすると、$mailto に
foo@bar.com;rm /bin/*
のようにメタ文字を使って UNIX コマンドを渡されたときに
実行されてしまう可能性があるので、
パイプにユーザー入力文字を渡すのは避けた方がいいとありました。
 
上のコードの場合は、sendmail に -t オプションを渡して、

if (open(MAIL,"| $sendmail $mailto")) {
.....
print MAIL "To: $mailto";

とやれば安全です。


dindi[MAIL][URL][WriteDate :Wed Apr 5 21:31:46 2000]

すっすいません「とやれば安全です。」の前に正解をちゃんと
かいてません。正しくは下の通りです。
 
if (open(MAIL "|$sendmail -t")) {
.....
print MAIL "To:$mailto";
 
-t は mail の to: ヘッダを有効にするオプションです。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:

Back