PHP的邮件():有哪些潜在的问题需要注意?

时间:2011-01-29 00:37:19

标签: php security

给定一个接受自定义用户输入的联系表单(例如地址,主题行,消息),有哪些安全隐患和“陷阱”要小心?

至少,必须验证用户的电子邮件地址(可能使用filter_var()或等效的)。根据我的阅读,这也应该防止将额外的标题注入脚本。

虽然主题和消息内容怎么样?这些领域需要卫生设施吗?我认为一个电子邮件客户端会阻止脚本之类的东西自动运行,我并不特别担心像HTML标签这样的东西(如果有人想花时间手工设置电子邮件,这是他们的特权 - 我不会看到它:P)。如果要求卫生 ,那么最好的做法是什么,而不要过于干扰(即保持电子邮件的性质相同)?

2 个答案:

答案 0 :(得分:8)

如果您正在使用第四个参数,可选标题,请注意插入额外标题,如果您正在执行此类操作...

mail($to, $subject, $message, 'From: $email');

如果$email来自用户输入且未经过清理,则用户可以输入类似...

\n\rCC:spammer@spamzilla.com

您可以通过过滤\n\r,或使用$email功能验证filter_var($email, FILTER_VALIDATE_EMAIL)来避免这种情况。

答案 1 :(得分:4)

确保人们不能在身体以外的任何地方注入线条。另外,使收件人保持静态,永远不会传递给他通过隐藏的表格字段。但是,添加这样的字段并不是一个坏主意;但如果IP没有设置为预期值,则阻止IP - 那么您的客户端可能是垃圾邮件机器人。