[英]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.