代码之家  ›  专栏  ›  技术社区  ›  StripyTiger

与html编码混淆

  •  1
  • StripyTiger  · 技术社区  · 8 年前

    我理解人们做事情的方式有所不同,但许多人建议你应该在输入时将输入存储在数据库中,然后在阅读时按照你计划的方式进行处理。这对我来说很有意义。

    我也应该htmlencode吗?如果我不这样做,它看起来一切正常(在Chrome和Firefox中),但我不确定这是否正确,它会在其他浏览器中正确显示吗?

    如果我将htmlentities与ENT_引号和htmlspecialchars一起使用,我开始获得这些字符的代码,我相信如果查看页面源代码,而不是用户看到的页面,我应该看到这些代码。

    问题是,如果不进行编码,我看到的是我想看到的,但我的脑海中有一个小问题,那就是我没有正确地进行编码!

    1 回复  |  直到 8 年前
        1
  •  1
  •   gview    8 年前

    你对此感到困惑。字符编码是系统的一个属性。你的网站和数据库负责字符编码。

    你必须决定接受什么。我想说的是,一般来说,web已经朝着UTF-8的标准化方向发展。因此,如果您的网站接受用户输入和数据库,以及所有涉及的连接都是UTF-8,那么您就可以接受UTF-8的输入,并且应该适当配置数据库中的字符集和排序规则。

    should at a minimum be this :

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

    这已经不可能了。

    最后,您提到了htmlpurifier。它的存在是为了让人们能够尝试并避免XSS和其他类似性质的漏洞利用,当你接受用户输入时,这些人就会注入html&js。

    这始终是一个问题,这取决于系统的性质以及您对该输出所做的操作,但正如其他人在评论中所建议的那样,您可以在从数据库检索输出后对其运行消毒剂和过滤器。在将php字符串变量注入到您正在服务的活动html页面中并将其武器化之前,它并没有内在的危险。