我了解mysql_real_escape_string
等等,但是当我只是发送电子邮件时呢?
所以我有表单和文本框,直接通过电子邮件将$_POST
数据发送给用户是否有任何漏洞?我猜他们将无法执行任何 PHP .. 或者如果他们从网址运行它,他们可以吗?我不确定。
如果直接发送到电子邮件,那就没问题了。如果它被存储在数据库中以显示在管理员页面(如帮助台等)上,那么它需要为 html 输出和 mysql 进行转义。您可以使用许多函数来转义 mysql:
这就是说,因为电子邮件可以包含 HTML,如果您不想收到人们在其中放入虚假 HTML 的电子邮件<blink>
(这真的很烦人),那么您可以使用htmlspecialchars()
: http: //php.net/manual/en/function .htmlspecialchars.php
如果您担心电子邮件中的 Javascript,那么使用htmlspecialchars()
上面提到的也可以避免这种情况。
问题是不信任用户输入。最大的问题是,当您从POST变量中设置电子邮件地址或密件抄送时。可以在请求上设置任何电子邮件地址。
但是可以通过您的表单向用户发送链接或其他内容。为此,您应该实施验证码。机器人无法将带有定义值的表单发送给任何人。
最后一个解决方案是表单中的隐藏文本字段。您可以使用 CSS 隐藏它们。当该字段不为空时,您知道机器人已填充它们。
但是我认为当你用htmlspecialchars()转义你的 POST 变量时它很好
所以有很多可能性来保护表格。您不仅应该使用其中之一,还应该信任用户。