Php 清理稍后将通过电子邮件发送的用户输入-我应该担心什么?

Php 清理稍后将通过电子邮件发送的用户输入-我应该担心什么?,php,forms,email-validation,sanitize,Php,Forms,Email Validation,Sanitize,我在印度的一个非政府组织(Seva Mandir)实习,试图修复他们坏掉的“订阅时事通讯”框。因为工作人员不是很老练,我们的网络主机也不是很好,所以我决定通过mail()将相关数据发送给发布人员,而不是将其存储在MySQL数据库中 我知道最好将用户输入视为恶意输入,我在SO论坛上搜索了与转义用户数据相关的帖子,以便发送邮件消息。我知道数据应该转义;我应该担心什么?在发送电子邮件之前,最好的方法是什么 还要注意的是,该组织的web主机仍然使用PHP4,所以我不能只对字符串使用filter_var。

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

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

还要注意的是,该组织的web主机仍然使用PHP4,所以我不能只对字符串使用filter_var。我是,但现在我不得不使用正则表达式、strip_标记或其他方法

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

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

Kevin

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

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

请参阅。

您需要注意攻击


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

看起来他并没有让用户输入主题,但是的,任何标题都应该是干净的。我正在使用rfc3696清理用户的电子邮件输入。所有条目(名称、电子邮件等)都将进入我发送给出版物编辑器的电子邮件正文中。我使用了以下代码(从链接中,对于将来访问此问题的任何人):函数安全($name){return(stru_-ireplace(数组(“\r”、“\n”、“%0a”、“%0d”)、“内容类型:”、“bcc:”、“to:”、“cc:)、“,$name”);}