1

正如标题中提到的,我对 htmlspecialchars() 对用户输入的数据进行清理非常有信心。但是对于清理电子邮件,我仍然可以使用它而不是 FILTER_SANITIZE_EMAIL() 吗?前提是我已经使用过 FILTER_VALIDATE_EMAIL()

4

3 回答 3

4

在用户输入上使用 htmlspecialchars 是一种防止 XSS 攻击的方法,它是一种在输出数据时安全的方法,而不是在保存数据时。

假设用户提交了这个:

<span onclick="alert('evil script')">something that seems normal</span>

您可能希望准确地保存用户提交的内容。但是当你显示它时,你应该使用htmlspecialchars(或htmlentities)将一些特殊字符转换为实体,以防止浏览器解释它们。

过滤器扩展中的一个函数上使用的FILTER_VALIDATE_EMAIL标志是一种验证用户数据的方法,这是在保存用户数据之前需要完成的过程。

有关防止 xss 的更多详细信息,您可以在此处找到

于 2013-06-14T13:33:33.313 回答
2

FILTER_SANITIZE_EMAIL确保字符串是电子邮件地址。

htmlspecialchars使字符串可以安全地插入 HTML。

它们是完全不同的东西,在任何情况下都不能相互替代。

于 2013-06-14T13:30:17.360 回答
0
 Provided I have already used FILTER_VALIDATE_EMAIL

那么如果您已经验证了字符串,那么字符串将如何包含除电子邮件之外的任何内容。

如果即使验证失败也要输出给定的电子邮件,那么是的,您应该htmlspecialchars()在电子邮件字符串上使用,或者只是通知它不是有效的电子邮件。

于 2013-06-14T13:37:00.810 回答