使$ _POST数据安全地发送给电子邮件

时间:2012-11-14 13:08:54

标签: php email

我了解mysql_real_escape_string等等,但是当我发送电子邮件时呢?

所以我有表格和文本框,只是直接通过电子邮件将$_POST数据发送给用户有任何漏洞吗?我猜他们无法执行任何PHP ..或者如果他们从网址运行它们可以吗?我不确定。

2 个答案:

答案 0 :(得分:5)

如果直接发送到电子邮件,那就没关系了。如果它存储在数据库中以显示在管理员页面(如帮助台等)上,则需要对html输出和mysql进行转义。您可以使用许多函数来转义mysql:

那说因为电子邮件可以包含HTML,如果你不想接收人们把伪造的HTML放在<blink>中的电子邮件(这真的很烦人),那么你可以使用htmlspecialchars()http://php.net/manual/en/function.htmlspecialchars.php

如果您对电子邮件中的Javascript感到担心,那么使用上面提到的htmlspecialchars()也会逃避此问题。

答案 1 :(得分:2)

问题是不信任用户输入。当您从 POST 变量设置电子邮件地址或BCC时,最大的问题是。可以通过请求设置任何电子邮件地址。

但是可以通过表单向用户发送链接或其他内容。为此,您应该实现验证码。机器人无法将带有定义值的表单发送给任何人。

最后一个解决方案是表单中的隐藏文本字段。你可以用CSS隐藏它们。当该字段不为空时,您知道机器人已填满它们。

但是当你用htmlspecialchars()

逃避你的POST变量时,我认为它很好

因此,有很多可能来保护表单。您不仅应该使用其中一个并信任该用户。