1
16
数据库中的数据是真正的HTML还是应用程序数据(比如名称或注释),而您恰好知道这些数据最终将成为HTML页面的一部分?
代表
稍后, (例如,以HTML格式显示,存储在数据库、纯文本文件或XML文件中),那么重要的是要确保正确翻译,以便以下一个环境固有的格式准确表示。简言之,当您要在HTML页面上显示它时,请确保它被翻译为正确编码的HTML(手动或通过工具),以便在页面上准确显示该值。当您要将它存储在数据库中或在查询中使用它时,请使用转义和/或准备语句和绑定变量,以确保相同的概念值准确地表示在数据库中。当您将它存储在一个XML文件中时,您要确保它的XML编码是正确的。 在跨越表示边界时未能正确转换是注入攻击(如SQL注入攻击)的根源。当您使用多种表示/语言(例如Java、SQL、HTML、Javascript、XML等)时,请注意这一点。 --
|
2
13
这种做法是HTML编码之前 .
那个 而不是编码版本。 |
3
2
数据库供应商特定的输入转义,html转义输出。 |
4
1
我不同意那些认为它应该在显示时解码的人,如果它在到达数据库之前被编码,那么攻击发生的可能性只有在开发人员在显示它之前对它进行解码时才可能发生。然而,如果你在展示它之前对它进行解码,那么它总是有可能被其他新手开发人员发现,比如新员工,或者一个糟糕的实现。如果它坐在那里没有编码,它只是等待在互联网上弹出和传播像疱疹。丢失原始数据不应该是一个问题。编码+解码每次都应该产生相同的数据。就我的两分钱。 |
5
-1
当您允许用户(或者更确切地说是坏人)使用html标记,然后您将它们处理/插入到数据库中时,就会启动。XSS是造成大多数安全漏洞的根本原因之一。因此,在存储html之前,您肯定需要对其进行编码。 |