我非常有信心使用htmlspecialchars()来清理标题中提到的用户输入数据。但是为了清理电子邮件,我还可以使用它而不是FILTER_SANITIZE_EMAIL()吗?如果我已经使用过FILTER_VALIDATE_EMAIL()
答案 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()
,或者只是通知它不是有效的电子邮件。