我正在为印度的一个非政府组织实习(Seva Mandir,http://sevamandir.org)并试图修复他们破碎的“订阅时事通讯”框。由于工作人员不是很精密,我们的网络主机不是很好,我决定通过mail()将相关数据发送给出版人,而不是将其存储在MySQL数据库中。
我知道最好将用户输入视为恶意用户,并且我在SO论坛中搜索了与转发用户数据相关的帖子以便通过邮件发送。我知道数据应该被转义;在发送电子邮件之前,我应该担心什么以及清理输入的最佳方法是什么?
另请注意,组织的Web主机仍在使用PHP 4,因此我不能仅将filter_var用于字符串。我working with them to fix the problem,但是现在我必须使用正则表达式或strip_tags或其他方法。
表格流程:
1.用户在主页上输入电子邮件,然后单击“提交”
2.用户在第二页输入姓名,地址,更多信息(我知道,但我的老板要求我,但可用性差)并点击“提交”
3.通过$ _POST收集数据并通过电子邮件发送给出版物编辑器(并可能向订阅者发送确认信息)。
我将在步骤2中清理电子邮件,在步骤3中清除其他数据。感谢您的帮助 凯文
答案 0 :(得分:2)
据我所知,只要您使用纯文本并仅将用户输入的数据插入电子邮件正文中,就没有什么可以消毒的。
答案 1 :(得分:2)
如果您使用用户输入的电子邮件地址发送确认信息,请确保他们只输入了一封电子邮件。如果您不注意,垃圾邮件发送者可以将换行符(因此任意长Bcc:
个条目)隐藏到您的邮件标题中。
请参阅email injection。
答案 2 :(得分:1)
您需要了解Email Header Injection攻击。
基本上,如果您从\n
,\r
,$name
和$from
中删除$to
和$subject
,那么您应该相当安全,但最好采用白名单方法。