Html5中内容平安战略(CSP)-
Cordova不支撑内联事件,所以点击事件必需提取到js里面. 下列是从官网摘抄下来,但愿对您有所帮忙
为了缓解批量潜在的跨站点足本题目,Chrome的扩展系统已经纳入了内容平安战略(CSP)的个别概念。 这引入了一些相当严厉的战略,默许状况下将使扩展更加平安,并为您供给了新建和实施治理可由扩展和利用程序加载和施行的内容类型的法则的功能。
个别来说,CSP作为黑客/白名单机制,用于扩展程序加载或施行的资源。 为您的扩展定义合理的战略,您可以细心考虑扩展所需的资源,并请求阅读器确保这些资源是您的扩展程序可以拜访的独一资源。 这些战略供给超出您的扩展要求的主机权限的平安性; 它们是一个额外的维护层,而不是替换。
在网络上,这样的战略是通过HTTP头或元从来定义的。 在Chrome的扩展系统中,两者都不是一个合适的机制。 相反,扩展的战略是通过扩展名的manifest.json文件定义的,如下所示:
{ … “content_security_policy”:“[POLICY STRING GOES HERE]” … }
有关CSP语法的完备细致信息,请参阅内容平安战略标准以及有关HTML5Rocks的“内容平安战略简介”一文。
默许战略限定
没有定义manifest_version软件包没有默许的内容平安战略。 那些选中manifest_version 2,拥有默许内容平安战略:
script-src’self’; object-src’self’
此战略通过三种方式限定扩展和利用程序来添加平安性:
(1)评估和相干功能被禁用
下列代码不起作用:
警报(的eval( “foo.bar.baz”));
window.setTimeout(“alert(’hi’)”,10); window.setInterval(“alert(’hi’)”,10); new Function(“return foo.bar.baz”);
评估这样的JavaScript字符串是一个常见的XSS袭击向量。 相反,你应当编写如下代码:
alert(foo && foo.bar && foo.bar.baz); window.setTimeout(function(){alert(’hi’);},10); window.setInterval(function(){alert(’hi’);},10); function(){return foo && foo.bar && foo.bar.baz};
(2)内联JavaScript不会被施行
内联JavaScript不会被施行。 此限定制止内嵌块和内联事件处置程序(例如 )。
首先个限定通过使您不当心施行歹意第三方供给的足原来消弭批量的跨站点足本袭击。 但是,它需要您将代码写入内容与行为之间的洁净别离(您固然应当做到这一点)对吗? 一个例子可能使这更分明。 您可能会尝试编写一个阅读器操纵的弹出窗口作为单个popup.html包括:
<!doctype html> My Awesome Popup! function awesome(){ //做某事真棒! } function totalAwesome(){ //做某事真棒! } 函数clickHandler(element){ setTimeout( “awesome();getherAwesome()” ,1000); } function main(){ //初始化工作在这里。 } SCRIPT>
点击awesomeness!
放宽默许战略
(1)内联足本
直到Chrome 45,没有放宽对施行内联JavaScript的限定的机制。 特殊是,设定包括’unsafe-inline’的足本战略将不起作用。
从Chrome 46起,可以通过在战略中指定源代码的base64编码哈希来将内联足本列入白名单。 该散列必需以运用的散列算法(sha256,sha384或sha512)为前缀。 有关示例的
以上就是Html5中内容平安战略(CSP)的细致内容,更多请关注 百分百源码网 其它相干文章!