繁体   English   中英

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

[英]Can I use htmlspecialchars($email, ENT_QUOTES, 'UTF-8') instead of filter_sanitize_email()

我对htmlspecialchars()很有信心,可以如标题中所述清理用户输入的数据。 但是,为了清理电子邮件,我仍然可以代替FILTER_SANITIZE_EMAIL()使用它吗? 如果我已经使用过FILTER_VALIDATE_EMAIL()

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

假设用户提交了以下内容:

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

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

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

有关防止xss的更多详细信息,请参见此处

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

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

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

 Provided I have already used FILTER_VALIDATE_EMAIL

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM