2

我正在印度的一家非政府组织实习(Seva Mandir,http ://sevamandir.org ),并试图修复他们损坏的“订阅时事通讯”框。因为工作人员不是很老练,而且我们的网络主机也不是很好,所以我决定通过 mail() 将相关数据发送给发布人员,而不是将其存储在 MySQL 数据库中。

我知道最好将用户输入视为恶意输入,并且我在 SO 论坛中搜索了与转义用户数据以发送邮件消息相关的帖子。我知道数据应该被转义;我应该担心什么?在发送电子邮件之前清理输入的最佳方法是什么?

另请注意,该组织的 Web 主机仍在使用 PHP 4,因此我不能只对字符串使用 filter_var。我正在与他们一起解决问题,但现在我必须使用正则表达式或 strip_tags 或其他方法。

表单流程:
1. 用户在主页输入电子邮件并点击提交
2. 用户在第二页输入姓名、地址、更多信息(我知道可用性不好,但我的老板要求我这样做)并点击“提交”
3. 收集数据通过 $_POST 并将其通过电子邮件发送给出版物编辑(并可能向订阅者发送确认)。

我将在步骤 2 中清理电子邮件,在步骤 3 中清理其他数据。感谢您的帮助,
Kevin

4

3 回答 3

2

据我所知,只要您使用纯文本并将用户输入的数据仅插入到电子邮件正文中,就没有什么需要清理的了。

于 2010-05-01T05:19:41.627 回答
2

如果您使用用户输入的电子邮件地址发送确认,请确保他们只输入了一封电子邮件。Bcc:如果您不小心,垃圾邮件发送者可以将换行符和任意长的条目偷偷带入您的邮件标题。

请参阅电子邮件注入

于 2010-05-01T05:27:20.143 回答
1

您需要注意电子邮件标头注入攻击。

基本上,如果您从 , 中剥离和\n\r, $name$from您应该是相当安全的,但最好采用白名单方法。$to$subject

于 2010-05-01T08:40:15.100 回答