内容安全策略

时间:2018-02-21 12:59:15

标签: xml parsing syntax

我无法为我的博客的内容安全政策获取正确的XML语法。它很简单,但只要我添加更多策略,就会出现解析错误。

当前政策(有效):

<meta http-equiv='Content-Security-Policy' content='upgrade-insecure-requests'/>

新政策(解析错误):

<meta http-equiv='Content-Security-Policy' content='upgrade-insecure-requests';'report-uri' 'https://redacted.report-uri.com/r/d/csp/enforce'/>

错误:元素类型&#34;元&#34;必须遵循属性规范,&#34;&gt;&#34;或&#34; /&gt;&#34;

我已经阅读了XML语法,并查看了确认内容应使用分号分隔的示例,并且每个策略都以空格分隔。我已尝试在字符串上使用和不使用引号,并调整间距,但我无法弄清楚此解析错误。我对Python更熟悉,所以我确信对于那些对XML更有经验的人来说,这是一个简单的问题。感谢您帮助XML新手! :)

1 个答案:

答案 0 :(得分:0)

你正在混合两个&#34;层&#34;以你理解标记的方式。就XML和HTML而言,只有属性及其值:

<meta http-equiv='some value' content='some value' />

请注意,这些值均由匹配引号分隔,引号可以是'"。在这些引号内部可以是任何内容,除了会被误认为结束引号的内容。

如果您尝试将'放在值中,HTML / XML解析器会将其视为值的结尾,然后不知道如何处理接下来的内容;它基本上看到了这个:

<meta http-equiv='some value' content='some value' some-unexpected-text />

以分号分隔的列表全部是里面属性的值,可以被其他一些工具(CSP定义)理解:

upgrade-insecure-requests; report-uri https://redacted.report-uri.com/r/d/csp/enforce

所以你的标记应该是这样的:

<meta http-equiv='Content-Security-Policy' content='upgrade-insecure-requests; report-uri https://redacted.report-uri.com/r/d/csp/enforce' />