【发布时间】:2017-07-10 12:24:46
【问题描述】:
如果我有一个 CSP 元标记(而不是使用 HTTP 标头),如下所示:
<meta http-equiv="Content-Security-Policy" content="default-src https://cdn.example.net; child-src 'none'; object-src 'none'">
...然后我进入开发人员工具并删除该节点,浏览器是否会表现得好像从未提供过它,或者无论如何添加它的事实是否会持续存在?
我问是因为我想知道是否应该使用 HTTP 标头(无法修改),或者仅使用此元标记是否安全。
【问题讨论】:
-
HTTP标头不能修改是什么意思?
-
@KayakinKoder 特别是在您加载页面后。当您检查网络选项卡时,请求标头是只读的。
-
啊,所以你想知道安全方面,例如检查页面并编辑 CSP 的用户?如果用户这样做,他们显然是在尝试做一些恶意的事情,你可能不会在乎他们是否让自己容易受到 XSS 的影响 :) 黑帽黑客拥有完全定制的浏览器,可以编辑任何浏览器-侧面,所以这不是我担心的事情。
-
其实我想自己添加标题,但我知道我也可以添加元标记。元标记更容易添加,因为它不需要服务器端代码来向响应编写器添加标头,但我只是想知道使用元标记是否安全。
-
有道理。当您不想或不能使用服务器端代码 imo 时,更好的选择是使用您的服务器本身来添加标头。当然,最初在服务器上添加标头比插入简单的元标记要困难一些,但特别是如果您使用 Google 提出的严格 CSP,您的 CSP 永远不会真正改变。如果您碰巧使用 Apache,这里有一个如何创建标头以及如何生成随机数的示例:stackoverflow.com/questions/43948335/…