当前位置: 首页 > Web前端 > HTML

Web入侵的最后一道防线:CSP内容安全策略

时间:2023-04-02 21:54:01 HTML

首先,最后一道防线是什么?网页入侵有一个过程。简单来说就是1.代码注入和2.代码执行。对于黑客来说,代码注入并不代表万事大吉,因为此时代码只是静静地躺在受害者的服务器中,并没有做任何坏事!所以必须有代码来执行这一步。今天要讲的是如何防止恶意代码的执行。恶意代码执行方式一:内联脚本比如我的一个网站example.com被注入了恶意代码,这段代码长这样:此代码将从名为badguy.com的网站加载一个js脚本文件并执行它。只要执行这段代码,就会窃取一些用户信息。恶意代码执行方式二:DataURIschemeDataURIscheme设计的初衷是将一些小的资源,比如图片,直接嵌入到HTML中,避免额外加载。比如传统的图片代码是这样的:这种加载会消耗额外的网络带宽,增加网页的响应时间。现在你可以这样做:在这种情况下,图像只加载一次就可以显示。但是,这个方法可以被利用来执行JS代码!比如黑客只要注入下面这段看起来人畜无害的代码,用户一打开网页,就会……轰隆隆!(嗯,其实就是弹出一个对话框逗用户)我不会在这里列出所有这些,只是有一个想法。防止代码执行的内容安全策略:CSPCSP是Content-Security-Policy的缩写。基本功能是建立一个白名单,白名单之外的所有代码都不允许执行。CSP应用一:拒绝在第三方域名中执行脚本Content-Security-Policy:script-src'self'这样,示例1中的steal-your-cookies.js脚本不会被加载,更不会被执行向上。CSP应用2:拒绝执行DataURISchemeContent-Security-Policy:object-src'none'这样就无法执行示例2中的base64编码代码。不过除了object标签,img标签也可以执行base64代码。除了img,还有media,frame等...CSP应用三:主动向管理员报告入侵Content-Security-Policy:report-urihttp://example.com/report.php添加report-uri命令CSP策略将当前网页上任何违反CSP策略的行为发送到特定URL。通过这种方式,管理员可以知道他们的网站是否已被入侵。接下来是广告时间:我的简书:http://www.jianshu.com/u/0708...我的知乎:https://www.zhihu.com/people/...我的公众号:OutOfRange欢迎骚扰~