我了解mysql_real_escape_string
等等,但是当我发送电子邮件时呢?
所以我有表格和文本框,只是直接通过电子邮件将$_POST
数据发送给用户有任何漏洞吗?我猜他们无法执行任何PHP ..或者如果他们从网址运行它们可以吗?我不确定。
答案 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变量时,我认为它很好因此,有很多可能来保护表单。您不仅应该使用其中一个并信任该用户。