当前位置: 首页 > 面试题库 >

htmlentities()是否足以创建xml安全值?

乐正镜
2023-03-14
问题内容

我正在从头开始构建XML文件,并且需要知道htmlentities()是否会转换每个可能破坏XML文件(可能还有UTF-8数据)的字符?

这些值将来自twitter / flickr提要,因此我需要确保-


问题答案:

htmlentities() 这不是
构建合法XML的保证方法。

如果您只担心这,请使用htmlspecialchars()代替htmlentities()。如果您的数据表示形式与XML文档的编码形式之间存在编码不匹配的情况,则htmlentities()可以解决/覆盖它们(这样做会使XML大小变大)。我相信最好保持一致并只使用htmlspecialchars()

另外,请注意,如果将htmlspecialchars()内部用单引号引起来的XML属性的返回值作为泵浦,则还需要传递该ENT_QUOTES标志,以便对源字符串中的任何单引号也进行正确编码。我建议无论如何都要这样做,因为这会使您的代码不受将来有人对XML属性使用单引号引起的错误的影响。

编辑: 澄清:

htmlentities()会将许多非ANSI字符(我想这就是UTF-8数据的意思)转换为实体(仅用ANSI字符表示)。但是,它不能对没有相应实体的任何字符执行此操作,因此不能保证其返回值仅由ANSI字符组成。这就是为什么我建议不要使用它。

如果可能存在编码问题,请明确处理(例如,使用iconv())。

编辑2 :考虑到乔什·戴维斯(Josh Davis)以下的评论,改进了答案。



 类似资料:
  • 问题内容: mysql_real_rescape_string()是否足以保护我免受黑客和SQL攻击?问问是因为我听说这些方法不能帮助您抵御所有攻击媒介?寻求专家的建议。 编辑:此外,怎么样的SQL攻击? 问题答案: @查尔斯是非常正确的! 您面临多种 已知 SQL攻击的风险,包括您提到的 SQL注入:是的!Mysql_Escape_String可能仍然使您容易受到SQL注入的影响,具体取决于您在

  • 问题内容: 我一直在假设线程安全也不是线程安全,但是在最近的一次讨论中,一位同事告诉我线程安全。 因此,我做了一些研究,却一无所获。很多人认为它是线程安全的,很多人认为它不是线程安全的。而且,最重要的是,文档没有以一种或另一种方式说任何话,不是为了,甚至不是。 那是什么呢? 问题答案: 这是指向Java 7 中Calendar和GregorianCalendar的源代码的链接。 如果阅读该代码,您

  • 问题内容: 有什么方法可以从中创建对象吗? 我的要求是从RAR读取文件。我不是要写一个临时文件,而是要在RAR存档中找到一个文件。 问题答案: 您需要创建新文件并将内容复制到该文件: 我使用方便来避免手动复制流。它还具有内置缓冲。

  • 问题内容: 是否可以创建内联伪样式? 例如,我可以做以下事情吗? 这背后的原因是我正在开发一个创建UI元素的.NET库。我想生成无需设置外部样式表即可设置其悬停状态的HTML元素。 问题答案: 不幸的是,不能,您不能使用内联CSS来实现悬停效果。 此问题的(较差)解决方法是让控件在呈现时呈现样式块。例如,您的控件可以呈现为: 如果您可以强迫用户在页面顶部放置“样式控件”,则可以在其中渲染所有自定义