我可以使用htmlspecialchars($ email,ENT_QUOTES,'UTF-8')代替filter_sanitize_email()

时间:2013-06-14 13:26:38

标签: php security xss

我非常有信心使用htmlspecialchars()来清理标题中提到的用户输入数据。但是为了清理电子邮件,我还可以使用它而不是FILTER_SANITIZE_EMAIL()吗?如果我已经使用过FILTER_VALIDATE_EMAIL()

3 个答案:

答案 0 :(得分:3)

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

假设用户提交此内容:

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

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

filter extension中某个功能使用的 FILTER_VALIDATE_EMAIL 标志是一种验证用户数据的方法,这是一个需要在 之前完成的过程你保存用户数据。

有关阻止xss的更多详细信息,您可以找到here

答案 1 :(得分:2)

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

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

它们是完全不同的东西,在任何情况下都不是彼此的替代品。

答案 2 :(得分:0)

 Provided I have already used FILTER_VALIDATE_EMAIL

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

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