防止摧毁utf8字符h_ಠ

Sca*_*ace 2 php security

我想过滤我的输出,使其更安全的跨站点脚本(XSS)攻击,所以我用htmlentities过滤输出.问题是,我试图使我的应用程序utf8兼容,所以当我输入类似ಠ_ಠ的东西时,我希望在从数据库中检索时进行维护.有没有简单的解决方案来实现这一目标?提前感谢任何建议.

Pet*_*ley 5

三件事

  1. HTML清理是输出转义任务,而不是输入过滤.你应该不是在存储之前做这个任务,你应该只做到这一点显示之前.
  2. 如果您试图阻止XSS,则不需要使用htmlentities()- htmlspecialchars()就足够了.htmlentities()仅在尝试从与本机编码不同的字符编码中呈现内容时使用.
  3. 两个 函数都接受字符编码作为第三个参数.

所以,最后:

echo htmlspecialchars( $content, ENT_QUOTES, 'UTF-8' );
Run Code Online (Sandbox Code Playgroud)

如果您使用ENT_NOQUOTES,则可能容易受到某些类型的XSS攻击.