比如:
alert(eval("foo.bar.baz"));
window.setTimeout("alert('hi')", 10);
window.setInterval("alert('hi')", 10);
new Function("return foo.bar.baz");
如果想执行可以把字符串转换为内联函数去执行。
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 };
同样CSP也提供了”unsafe-eval”去开启执行eval等函数,但强烈不建议去使用”unsafe-eval”这个指令。
五、CSP例子
♦例子1
网站管理员想要所有的内容均来自网站自己的域,不包括子域
Content-Security-Policy: default-src 'self‘
♦例子2
网站管理员想要所有的内容来自网站自己的域,还有其他子域的内容
Content-Security-Policy: default-src 'self' *.mydomain.com
♦例子3
网站管理员想要网站接受信任任意域的图像,指定域的音频视频和指定域的脚本。
Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
在这条策略中,默认情况下,网站只允许加载自己域的内容。但也有例外:
img-src * 使用*通配符可以加载任意域的图片。
media-src media1.com media2.com 视频音频只允许加载这两个域的script-src userscripts.example.com 脚本只能加载userscripts.example.com域的
♦例子4
网站管理员确保在线银行所有内容都通过SSL加载,确保信息不会被截获。
Content-Security-Policy: default-src