HTML5元标记:如果删除安全元标记,浏览器是否会相应更新?

时间:2017-07-10 12:24:46

标签: html html5 security

如果我有一个CSP元标记(而不是使用HTTP标头),如下所示:

<meta http-equiv="Content-Security-Policy" content="default-src https://cdn.example.net; child-src 'none'; object-src 'none'">

...然后我进入开发人员工具并删除该节点,浏览器是否会表现得好像从未提供过,或者它是否会被添加,无论如何都是持久性的?

我问,因为我想知道我是否应该使用HTTP标头(无法修改),或者只使用此元标记是安全的。

2 个答案:

答案 0 :(得分:2)

我绝对不会把它放在HTML中。即使你告诉浏览器永远不会缓存事物X,有些人最终还是会搞砸并将事物X缓存为“有用”。假设您希望将来将您的CDN从example.net更改为differentcdn.com;如果任何浏览器缓存了您的CSP,您的网站将被破坏。或者更糟糕的是,您不小心将CSP CDN部分编辑为“exEmple.net”并进行部署;浏览器缓存此问题,您的网站完全崩溃。我们有一些用户浏览器缓存302(临时..)重定向,笨拙地放在.htaccess文件而不是完全由服务器控制的http.conf,这真是一场噩梦;我不相信浏览器会对那些会破坏我们app的极其重要的事情做他们应该做的事情。

据我所知,标题永远不会被缓存。

最后,我建议您查看Google严格的CSP 3:https://csp.withgoogle.com/docs/strict-csp.html

答案 1 :(得分:0)

这个resource.AddFile元标记看起来像是“受保护的”,也就是说,即使通过开发工具将其删除,浏览器也会记住它的值。

您可以通过以下简单示例轻松尝试: index.html

Content-Security-Policy

然后打开开发工具并输入:

<!DOCTYPE html>
<html lang="en">

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Security-Policy" content="default-src self;">

您将看到类似的内容:

fetch('http://example.com')

让我们尝试删除特定的元标记

VM345:1 Refused to connect to 'http://example.com/' because it violates the following Content Security Policy directive: "default-src self 'mocky.io'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.

您仍然会看到相同的错误。

我在chrome和firefox的最新版本中尝试过。也许某些鲜为人知的浏览器或较低版本的浏览器会有不同的反应。不幸的是,我找不到更多关于它的信息,但是我没有看到不使用它的任何特殊原因。