2

私はインドのNGO(Seva Mandir、http: //sevamandir.org )でインターンをしていて、壊れた「ニュースレターの購読」ボックスを修正しようとしています。スタッフはあまり洗練されておらず、私たちのWebホストも優れていないため、MySQLデータベースに保存する代わりに、関連データをmail()を介して出版社に送信することにしました。

ユーザー入力を悪意のあるものとして扱うのが最善であることを私は知っており、メールメッセージを送信するためのユーザーデータのエスケープに関連する投稿をSOフォーラムで検索しました。データをエスケープする必要があることはわかっています。何を心配する必要があり、電子メールで入力する前に入力をサニタイズするための最良の方法は何ですか?

また、組織のWebホストはまだPHP 4を使用しているため、文字列にfilter_varを使用することはできません。私は問題を解決するために彼らと協力していますが、今のところ、正規表現、strip_tags、またはその他の方法を使用する必要があります。

フォームフロー:
1。ユーザーがホームページにメールを入力して[送信]をクリックします
2.ユーザーが2ページ目に名前、住所、詳細情報を入力し(使い勝手が悪い、わかりましたが、上司から依頼されました)、[送信]をクリックします
3.データを収集します$ _POSTを介して、出版物の編集者に電子メールで送信します(場合によっては、購読者に確認を送信します)。


ステップ2でメールをサニタイズし、ステップ3で他のデータをサニタイズします。Kevinさん、よろしくお願いします。

4

3 に答える 3

2

私の知る限り、プレーンテキストを使用していて、ユーザーが入力したデータを電子メールの本文にのみ挿入している限り、サニタイズするものは何もありません。

于 2010-05-01T05:19:41.627 に答える
2

ユーザーが入力したメールアドレスを使用して確認を送信する場合は、ユーザーが入力したメールが1つだけであることを確認してください。Bcc:スパマーは、注意しないと、改行、つまり任意の長さのエントリをメッセージヘッダーに忍び込ませる可能性があります。

メールインジェクションを参照してください。

于 2010-05-01T05:27:20.143 に答える
1

電子メールヘッダーインジェクション攻撃に注意する必要があります。

基本的に、、、から\nを削除する場合\r$name、かなり安全であるはずですが、ホワイトリストアプローチを採用するのが常に最善です。$from$to$subject

于 2010-05-01T08:40:15.100 に答える