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

时间:2016-11-16 17:28:40

标签: php utf-8 character-encoding xss html-entities

我目前正在过度使用我的网站,并希望随后使用正确的字符编码,因为到目前为止我遇到了一些问题。

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

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

我使用MySQLi并配置我的连接:

$DB->set_charset("utf8");

我的数据库正在使用utf8_general_ci整理。

所以我认为我正确地设置了一切。

现在我的问题: 为了避免跨站点脚本,我每次都会在显示用户保存到我的数据库中的数据时使用htmlentities()来破坏HTML字符,例如&lt; &GT; “'

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

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

我的错在哪里?实现xss安全和显示utf-8字符的正确方法是什么?我想我可能需要在这些主题中完成一个完整的速成课程。 This solution与我的问题不符,因为我已经使用了这个参数。

如果你能帮我解决这个问题,我将非常感激。 最好的祝福 卢卡斯

1 个答案:

答案 0 :(得分:0)

我可以通过切换到htmlspecialchars来解决这个问题。我认为这个函数足以抵御xss的安全性。