CSP

网络安全防范

XSS的全称叫做跨域脚本攻击,是最常见且危害性最大的网页安全漏洞。

简单来说,就是攻击者想尽一切办法将可执行的代码插入到网页中

比较常见的是在评论功能中,攻击者可以在评论区提交以下评论:

<script>alert(1)</script>

该评论被提交后,会存储在数据库中,当其他用户打开该页面时,该代码会被自动执行,用户就会被攻击到。

因此当我们在写代码的时候,必须时刻提防,对用户的输入永远保持不可信的态度。

为了防止XSS,我们在每次做项目的时候,做大量的编程措施。但这会做大量重复的工作,非常麻烦,显然不符合代码可重用可复用的理念。

有人就说了啊,能不能把这个工作交给浏览器去处理呢,让浏览器自动禁止外部恶意脚本?

然后**网页安全策略(CSP)**就出现了。

CSP

CSP的本质是添加白名单,开发者告诉客户端,哪些外部资源可以加载和执行,也就是添加白名单。客户端负责提供配置,实现和执行全部都交给浏览器。

开启CSP之后,网页的安全性得到了极大的保障。

开启CSP有两种方式。一种是通过HTTP头信息的Content-Security-Policy字段,另一种是通过网页的meta标签

第一种可以在DevTools中的Network面板中查看:

github中的CSP设置

第二种如下:

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">

开启之后,不符合CSP的外部资源就会被阻止加载。

CSP字段

CSP通过不同的字段限制不同类型的资源。

  • script-src:外部脚本
  • style-src:样式表
  • img-src:图像
  • media-src:音频和视频
  • font-src:字体
  • object-src:插件
  • child-src:框架
  • frame-ancestors:嵌入的外部资源<frame>
  • connect-src:HTTP连接
  • worker-src:worker脚本
  • manifest-src:manifest文件

默认配置使用default-src,默认配置即为各个字段的默认值。

有时候,我们除了防范XSS攻击,还希望可以记录此类行为,可以使用report-uri字段。

更多详细配置可以参考阮一峰 Content Security Policy 入门教程。

- END -

本文分享自微信公众号 - 大前端合集(fe-stack),作者:M不作声

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaScript实现继承

    使用class继承非常简单。子类使用extends关键字表明继承于哪个类,并在子类中调用super(),这相当于使用call()改变this的指向。

    不作声
  • Redux快速上手

    在创建一个Store时可以添加中间件,如redux-thunk用于异步获取数据,redux-devtools-extension浏览器调试工具等。

    不作声
  • 628笔试题

    第一次输出[9,2,3] [9,2,3],第二次输出[4,5,6] [9,2,3]

    不作声
  • CSP——前端安全第一道防线

    内容安全策略的主要作用就是尽量降低网站遭受 XSS 跨站脚本攻击的可能。浏览器没办法区分要执行的代码是否为页面本身的还是恶意注入的,XSS 就是利用这一点对网站...

    JS菌
  • OpenCV计算物体的重心坐标(2值图像)

    http://download.csdn.net/detail/wangyaninglm/9389338 

    流川疯
  • Base64编码C语言实现

    按照每 3 字节转为 4 个的规则,len(qwer) mod 3 = 1 也就是说多出来 1 字节,那我们要补充 2 字节进去才能凑够 3 字节

    yichen
  • 【Python基础】for循环与遍历列表

    很多情况下我们都需要对列表进行遍历操作,下面我们看下,如何对一个魔法师的列表进行遍历:

    DataScience
  • 编译安装 proxychains-ng proxychains4

    xuyaowen
  • python 安全编码&代码审计

    现在一般的web开发框架安全已经做的挺好的了,比如大家常用的django,但是一些不规范的开发方式还是会导致一些常用的安全问题,下面就针对这些常用问题做一些总结...

    py3study
  • MySQL5.7版本安装【面试+工作】

    MySQL5.7版本安装【面试+工作】 mysql 5.7 版本的安装 目录 一、概述 二、MySQL安装 三、安装成功验证 四、NavicatforMySQL...

    Java帮帮

扫码关注云+社区

领取腾讯云代金券