3

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

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

4

2 回答 2

5

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

这就是说,因为电子邮件可以包含 HTML,如果您不想收到人们在其中放入虚假 HTML 的电子邮件<blink>(这真的很烦人),那么您可以使用htmlspecialchars(): http: //php.net/manual/en/function .htmlspecialchars.php

如果您担心电子邮件中的 Javascript,那么使用htmlspecialchars()上面提到的也可以避免这种情况。

于 2012-11-14T13:11:50.167 回答
2

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

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

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

但是我认为当你用htmlspecialchars()转义你的 POST 变量时它很好

所以有很多可能性来保护表格。您不仅应该使用其中之一,还应该信任用户。

于 2012-11-14T13:22:59.773 回答