代码之家  ›  专栏  ›  技术社区  ›  Mark S. Rasmussen

存储或显示时对用户输入进行HTML编码

  •  28
  • Mark S. Rasmussen  · 技术社区  · 17 年前

    这个简单的问题一直困扰着我。

    5 回复  |  直到 16 年前
        1
  •  29
  •   Owen Ryan Doherty    17 年前

    我强烈建议在退出时对信息进行编码。如果您希望更改在某一点查看原始数据的方式,则将原始数据存储在数据库中非常有用。流程应类似于:

    sanitize user input -> protect against sql injection -> db -> encode for display
    

    考虑一种情况,您可能希望将信息显示为RSS提要。在重新显示之前必须重做任何特定于HTML的编码似乎有点愚蠢。任何开发都应该始终遵循“不信任输入”的模因,无论输入是来自用户还是来自数据库。

        2
  •  6
  •   Craig Stuntz    17 年前

    请记住,您可能需要使用不理解HTML编码文本的内容(例如,报告工具)访问数据库。我同意空间不是问题,但是,在数据库中使用HTML编码将视图/前端的知识转移到应用程序的最低层,这是一个设计错误。

        3
  •  6
  •   Andy Lester    17 年前

    编码只能在显示器上进行。毫无例外。

        4
  •  6
  •   Kornel    17 年前

    输出

    使用HTML,您不能简单地检查字符串的长度( & strlen() 将告诉你5),你可以很容易地裁剪它(它可以破坏实体)。

    您可能需要将数据库中的字符串与另一个源中的字符串混合,或者将它们读写回来。在应用程序范围内执行此操作而不丢失任何转义和避免双重转义是一场噩梦。

    magic_quotes 结果是一次巨大的失败。不要拿 magic_entities 路线!:)