博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSP防运营商劫持
阅读量:6581 次
发布时间:2019-06-24

本文共 1263 字,大约阅读时间需要 4 分钟。

一、什么是CSP

CSP英文全称Content Security Policy,中文意思是 内容安全策略。CSP以白名单的机制对网站加载或执行的资源起作用,在网页中,这样的策略通过 HTTP 头信息或者 meta 元素定义。用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件。

三、CSP的应用

2种方式

1. 前端配置 - Meta标签

在 HTML 的 Head 中添加 Meta 标签

复制代码

(提示:这里推荐本地启动web服务,去访问这个页面),这里是最基本的配置,完整代码如下:

    
CSP测试
CSP测试
复制代码

这种方式除了 头部的注入型劫持未被拦截以外 ,其他 script 劫持均被拦截。需要特别注意的是这段代码中的 nonce-shendun ,这里可以理解为 script 的安全属性,nonce- 是CSP提供的参数,shendun 这个名字是自定义的(官方推荐这里填随机数)。

2. 后端配置

Nginx 为例,配置 Sever 文件,添加如下代码:

server {    ...    add_header Content-Security-Policy "default-src *; script-src 'self' 'nonce-shendun' baidu.com *.baidu.com;";    ...复制代码

源列表中也接受了四个关键字:

  • 'none' 你可能会期望,什么也没有。
  • 'self' 匹配当前来源,但不匹配其子域。
  • 'unsafe-inline' 允许内联JavaScript和CSS (很多劫持是script直接注入,所以这里不推荐这么配置
  • 'unsafe-eval' 允许文本到JavaScript的机制eval。

CSP的API和用法指南太多了,奉上传送门:

四、数据分析

不管是前端配置还是后端配置 CSP 都非常方便,但是也存在 Head 头部协议被篡改,导致 CSP 失效的现象,这个时候 “薅羊毛” 的就有可乘之机。

以下是一个线上活动(加了CSP)的真实数据:

日期 PV UV 劫持PV 劫持UV 劫持率(劫持uv/uv)
10/16 485034 106487 91376 41069 38.56%
10/15 542713 123202 104994 48308 39.2%

这些真实数据作者未做任何处理,不过这里劫持UV数据拉的不是很科学,没有过滤掉一个页面出现多次劫持的成分,但总体劫持率还是很高。

开始怀疑人生...

五、总结

CSP不是万能的,有兴趣的同学可以看下防运营商劫持一:

  • 干货!防运营商劫持

可两者结合使用,希望对你有所帮助~

转载于:https://juejin.im/post/5bdbe90c51882516de76a422

你可能感兴趣的文章
转载:Beginning WF 4.0翻译——第三章(流程图工作流)
查看>>
mysql alter table
查看>>
芯片测试
查看>>
在源代码中插入防止盗版代码片段的方式
查看>>
hdu 3367 Pseudoforest(最大生成树)
查看>>
一个人,一则故事,一份情愫,一个世界……
查看>>
ffserver联合ffmpeg建立媒体服务器
查看>>
下载稻草人下来刷新+gallery
查看>>
删除浏览器浏览器删除cookie方法
查看>>
微软URLRewriter.dll的url重写的简单使用(实现伪静态)
查看>>
leetcode -- Combination Sum II
查看>>
1z0-052 q209_7
查看>>
PIN码计算锦集
查看>>
[Unity3D]再次点击以退出程序
查看>>
架构师的97种习惯
查看>>
PHP 开发 APP 接口 学习笔记与总结 - XML 方式封装通信接口
查看>>
IT基础架构规划方案之实际网络设计案例
查看>>
Navicat for MySQL 使用SSH方式链接远程数据库(二)
查看>>
poj 1274The Perfect Stall
查看>>
ibm BIP2276E: The flow includes a message flow of node type 'ComIbmFileReadNode'
查看>>