設置者に届くメールの件名に、入力内容の一部を反映させる方法

江島さん (2010-06-22 18:09:51) www.hokeni.org/top/sgroup/mailform/mailform.html

和田さま

使いやすくて、しかもフリーのフォームを公開してくださってありがとうございます。
一つ相談させていただきたいことがございます。

フォームを入力して送信すると、設置者に確認用のメールが届きますが、
このメールのタイトルに、フォームで入力した内容を反映させることは可能でしょうか。

具体的には、研究会・講習会の申し込みフォームを作っています。
研究会は複数予定しているのですが、それら一個ずつに
フォームを設置していくのは面倒なので、
一括して研究会申し込みフォームをつくり、
その入力項目に、「参加希望研究会」を設けることで
どの研究会に参加したいのかを選択する方式にしました。

設置者に届くメールの件名の中に、この「参加希望研究会」が入るようにしたいのです。
「~研究会 参加申し込み」のように個別の研究会の名前が
件名に入っていた方が、整理しやすいためです。

CGIに疎く、入力した内容がどのようにしてメールに打ち出されているのかがわからないため、質問させていただきました。
上記の内容がそもそも可能なのか、もし可能ならばその方法について
ご教授お願いいたします。

Re:設置者に届くメールの件名に、入力内容の一部を

和田 (2010-06-23 18:08:12) www.synck.com

需要が多い機能ですがセキュリティの関係で対応しておりません。
やってできない事はないのですがfunction.cgi内のgetpostという関数内でそれっぽい文章をちょちょっと書くとできますがセキュリティの観点から「超どーしてもやりたいっ!」という場合をのぞいては推奨しておりません。

このFAQ内を探せばどこかにそういったたぐいのアレがでてくるかもしれませんが後学のために書いておきますね。

if($name ne $null && ~
という部分を
if($name eq "subject"){
$config{"subject"} = $value;
}
elsif($name ne $null && ~

とするのみです。ただ前述の通りなにかしら頑張ったら攻撃される可能性があるため基本的に推奨できません。サニタイジングをしっかりやれば攻撃も防げると思いますが、攻撃される可能性がゼロでは無い以上、おすすめはできませんよっ!

承知しました

江島さん (2010-06-24 17:47:04) www.hokeni.org/top/sgroup/mailform/mailform.html

和田さま

お返事いただきありがとうございます。
教わったやり方でできる所までは確認できました。

しかしセキュリティ上の問題があるのですね。
具体的にはどのような攻撃を受けることが考えられるでしょうか。
(素人なので、変な質問でしたらすみません。)

実際にこの形でやるかどうか、上司とも相談したいと思います。

Re:承知しました

和田 (2010-07-13 05:27:08) www.synck.com

回答遅れてすいません・・・。
メールはメールヘッダなるプレーンテキストから構成される決まった定型を記述してそれを送信するという仕組みなのですが、予期しない改行や特殊な文字などを挿入できる状況を許すと、そのメールヘッダを不正に改竄される可能性があるということです。

簡単な例としては攻撃ではありませんが改行を入れるだけでメールヘッダが壊れて変なメールが送信されます。それほど結構テキトーな仕組みの上で動作している都合上、自由度は極力抑えたほうがよいと私は思いますよ!まぁ心配しすぎな気もしますが危うきに近寄らないほうが無難ということで。