标签: content-security-policy

内容安全策略如何运作?

我在开发者控制台中遇到了一堆错误:

拒绝评估字符串

拒绝执行内联脚本,因为它违反了以下内容安全策略指令

拒绝加载脚本

拒绝加载样式表

这是怎么回事?内容安全策略如何运作?我如何使用Content-Security-PolicyHTTP标头?

具体来说,如何......

  1. ......允许多个来源?
  2. ......使用不同的指令?
  3. ...使用多个指令?
  4. ......处理端口?
  5. ...处理不同的协议?
  6. ......允许file://协议?
  7. ...使用内联样式,脚本和标签<style><script>
  8. ......允许eval()

最后:

  1. 究竟是什么'self'意思?

html javascript security http-headers content-security-policy

218
推荐指数
2
解决办法
16万
查看次数

内容安全政策"数据"不适用于Chrome中的base64图像28

在这个简单的例子中,我正在尝试使用元http-equiv头设置CSP头.我添加了base64图像,我正在尝试让Chrome加载图像.

我认为data关键字应该这样做,但不知怎的,它不起作用.

我在开发人员工具中遇到以下错误:

拒绝加载图像'data:image/png; base64,R0lGODlhDwAPAOZEAMkJCfAwMMYGBtZMTP75 + euIiPFBP + hVVf3v7 ... nw7yk4Mjr6GLUY + joiBI2QAACABwJDCHgoKOHEoAYVBAgY8GGAxAoNGAmiwMHBCgccKDAKBAA7',因为它违反了以下内容安全策略指令:"img-src'self'data".

示例代码(JSFiddle不适用于此示例,因为我无法在其中设置元标题):

<html>
<head>
<meta http-equiv="Content-Security-Policy" content="
        default-src 'none';
        style-src 'self' 'unsafe-inline';
        img-src 'self' data;
        " />
    <style>
        #helloCSP {
            width: 50px;
            height: 50px;
            background: url(data:image/png;base64,R0lGODlhDwAPAOZEAMkJCfAwMMYGBtZMTP75+euIiPFBP+hVVf3v7+iHh/JNTfh9dNUYGPjTvskXFfOLi/daVe96es4eHPWIiOqbi9dNRvzWwexdV9U1NeFSS94iIvuxodVGP/ZsZM8jI+ibm/alluQzMdxSSvbGstwsKu2Yid4iIfjQu/JnYO6djvajlMQEBPvLuOJdXeMxL/3jzPBSTdwqKNY2Mf3i4vU5OfbPz/3f3/zUv/zizO0tLc0NDfMzM+UlJekpKeEhId0dHdUVFdkZGdEREf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAPAA8AAAepgESCRBsLEDQQCxuDgxYdO5CROx0WgywGAQEKM0M2CpkGN0QvMDmmE0OpE6Y5KEQqPbE9D6lDD7I9IBc8vDwRtRG9PBcuPsY+B7UHxz4hP8/PGghDCBrQPyYxQdvbBUMF3NskGUDl5QwtDOblGSVC7+8JNQnw7yk4Mjr6GLUY+joiBI2QAACABwJDCHgoKOHEoAYVBAgY8GGAxAoNGAmiwMHBCgccKDAKBAA7) no-repeat;
            border: 1px solid red;
        }
    </style>
</head>
<body>
<h1>CSP</h1>
    <div id="helloCSP"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

您也可以在此处打开此示例:https:
//dl.dropboxusercontent.com/u/638360/ps/csp.html

content-security-policy

213
推荐指数
1
解决办法
7万
查看次数

脚本和样式元素的HTML"nonce"属性的目的是什么?

W3C说,有在HTML5.1一个新的属性称为noncestylescript可以通过一个网站的内容安全策略中使用.

我搜索了它,但最终没有得到它实际上这个属性做什么和使用它时会发生什么变化?

html html5 attributes nonce content-security-policy

96
推荐指数
1
解决办法
6万
查看次数

拒绝加载脚本,因为它违反了以下内容安全策略指令

嗨,当我尝试将我的应用程序部署到Android系统5.0.0以上的设备上时,我不断收到这种错误消息:

07-03 18:39:21.621:D/SystemWebChromeClient(9132):file:///android_asset/www/index.html:第0行:拒绝加载脚本' http:// xxxxx ',因为它违反了以下内容安全政策指令:"script-src'self''unsafe-eval''unsafe-inline'".07-03 18:39:21.621:I/chromium(9132):[INFO:CONSOLE(0)]"拒绝加载脚本' http:// xxx ',因为它违反了以下内容安全策略指令:"script- src'self''unsafe-eval''unsafe-inline'".

但是,如果我将其部署到Android系统为4.4.x的移动设备上,则安全策略可以使用默认策略:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
Run Code Online (Sandbox Code Playgroud)

然后我想,也许,我应该改成这样的事情:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">
Run Code Online (Sandbox Code Playgroud)

基本上,这两个选项对我来说都不适用.有没有人知道如何解决这个问题?

谢谢!

javascript android cordova content-security-policy

63
推荐指数
8
解决办法
21万
查看次数

内容安全策略:页面的设置阻止了资源的加载

我在页面加载时使用验证码,但由于某些安全原因它会阻塞

我面临问题:

    Content Security Policy: The page's settings blocked the loading 
    of a resource at 
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit 
    ("script-src http://test.com:8080 'unsafe-inline' 'unsafe-eval'").

我使用了以下js和meta标签:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>
Run Code Online (Sandbox Code Playgroud)

javascript jquery content-security-policy

60
推荐指数
3
解决办法
11万
查看次数

在ember-cli 0.0.47升级后违反内容安全策略指令

我将我的ember-cli应用程序升级到0.0.47,现在我的浏览器控制台中出现了一系列与内容安全策略相关的错误.我该如何解决这个问题?

Refused to load the script 'http://use.typekit.net/abcdef.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' localhost:35729".
 login:1
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' localhost:35729". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.
 login:20
Refused to load the script 'http://connect.facebook.net/en_US/all.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval' localhost:35729".
 login:1
Refused to load …
Run Code Online (Sandbox Code Playgroud)

ember.js content-security-policy ember-cli

59
推荐指数
2
解决办法
4万
查看次数

由于Content Security Policy指令,Extension拒绝加载脚本

以下是我的HTML代码

脚本:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="background.js"></script>
Run Code Online (Sandbox Code Playgroud)

HTML:

      <button name="btnlogin" id="btnlogin">Login</button><br/><br/>
Run Code Online (Sandbox Code Playgroud)

以下是js

$(document).ready(function(){
document.getElementById("#btnlogin").click(function(){
   alert("s");
 });
});
Run Code Online (Sandbox Code Playgroud)

清单文件:

{
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a 'browser action' with kittens.",
 "version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
}
Run Code Online (Sandbox Code Playgroud)

我发现当我在浏览器中运行此代码而不是正确显示警报时,但当我将其作为chrome扩展程序运行时,它会给我以下错误.

未捕获的ReferenceError:$未定义

拒绝加载脚本' http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js ',因为它违反了以下内容安全策略指令:"script-src'self'chrome -extension资源".

我不明白这些错误是什么.请帮我理解扩展..

谢谢

jquery google-chrome google-chrome-extension content-security-policy

49
推荐指数
1
解决办法
6万
查看次数

如何在浏览器JS控制台中包含脚本时覆盖内容安全策略?

我试图通过这种方式使用控制台在现有网站上包含JQuery:

var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery-1.11.1.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)

然后我收到了这个错误:

Content Security Policy: The page's settings blocked the loading of a resource at http://code.jquery.com/jquery-1.11.1.min.js ..
Run Code Online (Sandbox Code Playgroud)

在开发过程中,我可能想要包含外部Javascript.我可能不想复制粘贴整个JQuery代码,因为它看起来不整洁.如何为开发目的覆盖内容安全策略?

这对快速测试非常有用.我可能想稍后将我正在编写的脚本转换为浏览器扩展.

注意(更新):我在现有网站上编写脚本,无法控制设置Content-Security-Policy标头.

javascript browser-security browser-extension content-security-policy

47
推荐指数
1
解决办法
5万
查看次数

拒绝应用内联样式,因为它违反了以下内容安全策略指令

所以,在大约1小时内,我的扩展失败了.

我正在进行扩展,它正在做我假装的事情.我做了一些更改,因为我不喜欢我删除它们,现在我的扩展程序抛出了错误:

拒绝应用内联样式,因为它违反了以下内容安全策略指令:"default-src'self'".请注意,'style-src'未显式设置,因此'default-src'用作后备.

是什么导致这个错误?

我做了以下改动:

popup.html

<!DOCTYPE html>
<html ng-app="PinIt" ng-csp>
    <head>
        <link rel="stylesheet" href="css/popup.css">
        <script src="js/lib/jquery-1.8.2.min.js"></script>
        <script src="js/lib/angular.min.js"></script>
        <script src="js/app/app.js"></script>
        <script src="js/app/popup.js"></script> 
    </head>
    <body id="popup">
        <header>
            <h1>PinIt</h1>
        </header>
    <div ng-controller="PageController">
            <div>{{message}}</div>
            <h2>Page:</h2>
            <div id="elem">{{title}}</div>
            <div>{{url}}</div>
            <h2>Imagens:</h2>
            <ul>
                <li ng-repeat="pageInfo in pageInfos" style="list-style: none">
                    <div class="imgplusshare">
                    <img src={{pageInfo}} class="imagemPopup"/>
                    <ul class="imas">
                      <li id="liFacebook" ng-click="fbshare(pageInfo)">
                      <span>
                      <img src="facebook_16.png"/>Facebook
                      </span>
                    </li>
                    <li id="liTwitter" ng-click="twshare(pageInfo)">
                    <span>
                    <img src="twitter-bird-16x16.png"/>Twitter
                    </span>
                    </li>
                    <li id="liGooglePlus" ng-click="gpshare(pageInfo)">
                    <span><img src="gplus-16.png"/>Google+</span>
                    </li>
                    <li id="liEmail" ng-click="mailshare(pageInfo)">
                    <span><img src="mail_icon_16.png"/>Email</span>
                    </li>
                    <hr> …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension content-security-policy

41
推荐指数
4
解决办法
8万
查看次数

Google字体违反了内容安全政策

我正在尝试使用谷歌字体,我从来没有遇到任何问题,但现在当我尝试在我的标题上添加CSS文件时,我在控制台上收到此错误:

拒绝加载样式表,'http://fonts.googleapis.com/css?family=Whatever'因为它违反了以下内容安全策略指令:"style-src 'self' 'unsafe-inline'".

html css http google-font-api content-security-policy

40
推荐指数
4
解决办法
3万
查看次数