在发送每封电子邮件之前过滤用户输入

时间:2012-02-10 11:04:07

标签: php security email sanitization

我在PHP中创建一个简单的反馈表:用户只需输入一些关于我的网站的评论/建议等,然后点击“发送反馈”。然后,他输入的文本将作为电子邮件正文直接发送给我(即我自己设置收件人地址,用户的输入仅在邮件正文中使用)。

现在我不确定,如果我只是将未经过滤的文本插入电子邮件正文中,那么可能会发生什么样的攻击。<​​/ p>

我目前正在使用Joomla平台(即我正在使用Joomla的JMail功能),但我认为问题更为笼统:有很多关于SQL注入和跨站点脚本的信息(这是等效的攻击媒介),但我没有找到太多关于电子邮件的内容。

请注意,就我而言,每封电子邮件只发送 ,因此我不关心SQL-Injection或跨站点脚本(电子邮件以纯文本形式发送)。那么我应该应用什么样的过滤?

由于 马丁

2 个答案:

答案 0 :(得分:0)

由于您只期望评论和建议,因此您只需删除字母,数字和“。”,“,”之外的任何字符。即使它删除了其他字符对你来说也没关系,你就会明白它们的含义。 “=”是最大的敌人。但我描述的那套应该让你安全。

答案 1 :(得分:0)

最重要的是SPAM保护。

如果您使用HTML发送电子邮件,则应过滤标签(strip_tags或htmlspecialchars)或验证用户的HTML(HTMLPurifier http://htmlpurifier.org/

限制消息的长度也很有用。