我在开发者控制台中遇到了一堆错误:
拒绝评估字符串
拒绝执行内联脚本,因为它违反了以下内容安全策略指令
拒绝加载脚本
拒绝加载样式表
这是怎么回事?内容安全策略如何运作?我如何使用Content-Security-Policy
HTTP标头?
具体来说,如何......
file://
协议?<style>
和<script>
?eval()
?最后:
'self'
意思?html javascript security http-headers content-security-policy
在这个简单的例子中,我正在尝试使用元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
W3C说,有在HTML5.1一个新的属性称为nonce
的style
和script
可以通过一个网站的内容安全策略中使用.
我搜索了它,但最终没有得到它实际上这个属性做什么和使用它时会发生什么变化?
嗨,当我尝试将我的应用程序部署到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)
基本上,这两个选项对我来说都不适用.有没有人知道如何解决这个问题?
谢谢!
我在页面加载时使用验证码,但由于某些安全原因它会阻塞
我面临问题:
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) 我将我的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) 以下是我的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
我试图通过这种方式使用控制台在现有网站上包含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
所以,在大约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) 我正在尝试使用谷歌字体,我从来没有遇到任何问题,但现在当我尝试在我的标题上添加CSS文件时,我在控制台上收到此错误:
拒绝加载样式表,'http://fonts.googleapis.com/css?family=Whatever'
因为它违反了以下内容安全策略指令:"style-src 'self' 'unsafe-inline'"
.
javascript ×5
html ×3
jquery ×2
android ×1
attributes ×1
cordova ×1
css ×1
ember-cli ×1
ember.js ×1
html5 ×1
http ×1
http-headers ×1
nonce ×1
security ×1