UTF8字符编码,htmlentities和跨站点脚本


UTF8 character encoding, htmlentities and Cross Site Scripting

我目前正在超负荷工作我的网站,并希望使正确的字符编码的后续使用,因为我有一些与此麻烦到目前为止。

我的HTML和PHP文件是用UTF8编码的,我的HTML头看起来像这样:

<!DOCTYPE html><html><head><meta charset="utf-8" />.....

我使用MySQLi并像这样配置我的连接:

$DB->set_charset("utf8");

我的数据库使用utf8_general_ci排序。

所以我想我设置的一切都是正确的。

现在我的问题:为了避免跨站点脚本,我每次在显示用户保存到我的数据库中的数据时使用htmlentities(),以便打破HTML字符,如<>

echo(htmlentities($str, ENT_QUOTES, "UTF-8"));

但是当$str包含其他特殊字符如ÄäÖöÜü&ßàé时,它们也会被破坏,我的浏览器只显示Ä等等…

我的错在哪里?实现对xss和显示utf-8字符的安全性的正确方法是什么?我想我可能需要一个关于这些主题的完整速成班。这个解决方案与我的问题不匹配,因为我已经使用了这个参数。

如果你能帮我解决这个问题,我将非常感激。致以最亲切的问候卢卡斯

我可以通过切换到htmlspecialchars来解决这个问题。