为什么80%的码农都做不了架构师?>>>   hot3.png

缘由

我们公司最近手机端H5 经常受到商户和用户的投诉,说有广告并且导致不能正常进行操作,我们商户自己当然不会加广告了,但是商户和用户可不管这些了,就认为是我们的问题

探索发现根本

目前我们用的很多浏览器,都提供插件功能,在Chrome浏览器体系下有个 广告终结者插件:可以用来屏蔽网页中的广告部分。受到这个插件的影响,我先探索下 广告劫持是怎么做的?我就想到通过获取网页html代码过来分析,如下JS代码

setTimeout(function(){$.ajax({url:"/error/ad_log",type:'post',data:{'content': $("html").html(),'url':window.location.href},success:function(){}});
},3000);

在后端我分析html内容发现如下截图几个内容,通过截图发现页面多了一些JS文件

600

600

600

<script type="text/javascript" id="1qa2ws" charset="utf-8" src="http://wap.zjtoolbarc60.10086.cn:8080/www/default/base.js"></script>

内容劫持原理

通过上图我们就分析出了,一般劫持是通过在页面加入引入一个JS文件,然后这个JS文件会执行各种逻辑,根据新引入的JS域名搜索,你就会发现很多东西了,

600

解决方案

知道了病状不代表就一定可以解决,例如我们公司的就很奇葩,因为广告的插入导致JS全部出错用户无法进行操作(太可*,插入广告就算了,还导致别人无法正常运营)。通过搜索我发现了可以通过CSP解决这个问题

CSP

定义

CSP 全称为 Content Security Policy,即内容安全策略。主要以白名单的形式配置可信任的内容来源,在网页中,能够使白名单中的内容正常执行(包含 JS,CSS,Image 等等),而非白名单的内容无法正常执行,从而减少跨站脚本攻击(XSS),当然,也能够减少运营商劫持的内容注入攻击。

使用方式一:Meta标签

在 HTML 的 Head 中添加如下 Meta 标签,将在符合 CSP 标准的浏览器中使非同源的 script 不被加载执行。不支持 CSP 的浏览器将自动会忽略 CSP 的信息,不会有什么影响。具体兼容性可在本文末尾参考资料中找到

<meta http-equiv="Content-Security-Policy" content="script-src 'self'">

使用方式二:Http 头部

Content-Security-Policy:
script-src 'unsafe-inline' 'unsafe-eval' 'self'  *.54php.cn *.yunetidc.com *.baidu.com *.cnzz.com  *.duoshuo.com *.jiathis.com;report-uri /error/csp

高级知识:指令集合

指令 取值示例 说明
default-src 'self' cdn.example.com 定义针对所有类型(js/image/css/web font/ajax/iframe/多媒体等)资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认。
script-src

'self' js.example.com

*.54php.cn

*://*.54php.cn

https://*.54php.cn

定义针对JavaScript的加载策略
object-src 'self' 针对,, 等标签的加载策略
style-src 'self' css.example.com 定义针对样式的加载策略
img-src 'self' image.example.com 定义针对图片的加载策略
media-src 'media.example.com' 针对或者引入的html多媒体等标签的加载策略
frame-src 'self' 针对iframe的加载策略
connect-src 'self' 针对Ajax、WebSocket等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为400的响应
font-src font.qq.com 针对Web Font的加载策略
sandbox allow-forms allow-scripts 对请求的资源启用sandbox
report-uri /some-report-uri 告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。不阻止任何内容,可以改用Content-Security-Policy-Report-Only头
base-uri 'self' 限制当前页面的url(CSP2)
child-src 'self' 限制子窗口的源(iframe、弹窗等),取代frame-src(CSP2)
form-action 'self' 限制表单能够提交到的源(CSP2)
frame-ancestors 'none' 限制了当前页面可以被哪些页面以iframe,frame,object等方式加载(CSP2)
plugin-types application/pdf 限制插件的类型(CSP2)

实践总结

注意点

由于采用白名单方式,所以这个名单要更具业务可能会有变化,所以的谨慎使用,如果配置不当导致页面无法加载就麻烦啦

CSP拦截数据结果

数据如下:广告蛋糕太大了,好多人都想分点

164   119.4.249.166:8080
225 www.tjqonline.cn
250 221.179.140.145:9090
364 220.196.52.141:30000
544 101.251.211.235
545 jdwx01.b0.upaiyun.com
1587    wap.zjtoolbarc60.10086.cn:8080

参考资料

  1. XSS终结者-CSP理论与实践

  2. 普遍的HTTP劫持

  3. CSP浏览器支持列表

原文地址: CSP -- 运营商内容劫持(广告)的终结者
标签: csp    css    运营商    广告    小米路由器    移动广告    广告联盟

智能推荐

  • 新购买的vps应该做的几件事情
  • 【自动化测试】无需图形界面环境下的浏览器开源项目
  • Ngrok NatApp 微信本地化调试利器
  • 【LBS】基于地理位置的搜索之微信 附近的人 简单实现
  • 树莓派3 之 启动 和 系统配置

转载于:https://my.oschina.net/54php/blog/783114

CSP -- 运营商内容劫持(广告)的终结者相关推荐

  1. 如何应对运营商插入的广告、被运营商劫持怎么办

    如何应对运营商插入的广告: 1.运营商告知缴费信息不在下列讨论范围. 2.理性投诉,不要辱骂客服人员,你说问题,让他给你记录反馈即可. 简要流程为:(工信部投诉之前务必先拨打运营商客服热线受理) 具体 ...

  2. 如何防止运营商网络劫持,避免被他人强行插入广告?

    主要的网络劫持形式: 近年来流量劫持(运营商网络劫持)频频发生,各种方式也是层出不穷,易维信-EVTrust总结各种网络劫持现象和其带来的危害 1.域名劫持,用户想要访问网站A,域名却被解析到其它地址 ...

  3. 修复运营商网站劫持,Win8.1怎么修改DNS

    说到运营商网站劫持,相信大多数读者也是身受其害,今天Win8迷:整理下,Win7.Win8.Win8.1系统下如何修改系统的DNS服务器,以及为自己的网络挑选最佳的DNS,轻松上网. 什么是DNS劫持 ...

  4. 运营商 html劫持 原理,域名劫持、运营商流量劫持的现象及分析

    1.域名劫持 现象就是,打开网站的页面,会出现莫名的跳转到站内或站外其他的网址.或者直接显示了站外的内容. 判断方法,更换其他绑定您网站的域名来访问,看是否正常.如果其他域名访问正常,应该基本确定是被 ...

  5. 运营商 html劫持 原理,细数宽带运营商常见的几种http劫持行为

    什么是http劫持:http劫持就是第三方(宽带运营商)在你和网站建立交互过程中劫持了你的请求,并返回错误页面的行为,宽带运营商作为基础电信网络服务提供者, 掌握着用户通往互联网大门的钥匙,用户的所有 ...

  6. 防治运营商HTTP劫持的终极技术手段

    运营商HTTP劫持(非DNS劫持)推送广告的情况相信大家并不陌生,解决的方法大多也是投诉增值业务部门进而投诉工信部.但这种方法费时费力,投诉接听人员并不了解情况导致答非所问的情况有很多,有时候不但受气 ...

  7. 5G时代运营商内容运营策略初探

    "4G改变生活.5G改变社会",2019年是中国5G正式商用的元年,关于5G的话题一直是近两年的热门话题. 运营商目前还处在4G网络建设的回本阶段,加上4G时代流量价格下行,不限量 ...

  8. 第32篇:某运营商链路劫持(被挂博彩页)溯源异常路由节点(上篇)

     Part1 前言  在世界杯举办期间,链路劫持的攻击风险估计会升高很多.链路劫持攻击是各类应急响应事件中危害比较大的,溯源起来有一定的难度,很多新手会感觉无从下手.本次ABC_123就分享一个自己曾 ...

  9. 你可能已经被运营商http劫持了

    IIS7.COM网站劫持检测 1.检测网站是否被劫持 2.域名是否被墙 3.DNS污染检测 4.网站打开速度检测 5.网站是否被黑.被入侵.被改标题.被挂黑链 [深度检测] 1.可以检测多层js劫持. ...

  10. 防止被运营商DNS劫持 作者:zzc

    文章目录 网络环境 一.网络劫持 怎么劫持网络 互联网劫持 国内公共DNS 国外公共DNS **想用DNS来访问Google是不可取的** 网络环境 这部分不会多写,仅供个人娱乐 一.网络劫持 在家用 ...

最新文章

  1. DOS命令大全 黑客必知的DOS命令集合
  2. Android 自定义viewpager 三张图片在同一屏幕轮播的效果
  3. entitymanager_实体管理器的类型:应用程序管理的EntityManager
  4. java 如何让循环结束,跳过某个条件,跳出当前的多重嵌套循环
  5. java里面value_「Java基础知识」Java中包含哪些运算符
  6. sharepoint 页面定制经验小结
  7. 是什么平台_什么是高空作业平台?
  8. matlab中符号对象的数据类型是,符号对象(Symbolic Object)的使用
  9. python中headers的作用_爬虫入门到精通-headers的详细讲解(模拟登录知乎)
  10. 【渝粤教育】国家开放大学2018年秋季 0700-22T中级会计实务(一) 参考试题
  11. python数字不同数之和_python练习 数字不同数之和+人名最多数统计
  12. 插入目录后 正文页码重新怎么从1开始
  13. 某鱼的兼职并不是那么好做,要钱也不是漫天要价
  14. before和after怎么区分_before和after区别 after的用法
  15. AutoJs学习-悬浮单任务计时器
  16. 汇编语言-中括号-mov指令-cmp指令-lea指令
  17. pycharm找不到安装包解决方法
  18. 恶人传时长_如何评价韩国电影《恶人传》?
  19. 蓝桥杯单片机省赛——第五届(模拟智能灌溉系统)
  20. spark shell 启动 出现org.apache.spark.SparkException: Found both spark.executor.extraClassPath and SPARK

热门文章

  1. jquery form表单序列化,并ajax实现提交后台
  2. 中国气象局发布实施细则 推进气象数据安全合规有序开放共享
  3. JDY-1110B电压继电器
  4. svn代码统计工具使用说明
  5. Javascript模块化编程(转自阮一峰的网络日志)
  6. 我用10张图总结出了这份并发编程最佳学习路线!!(建议收藏)
  7. 学习笔记--STM32F205+LCD
  8. STM32F205RET6工程应用要点
  9. Hilbert 变换与瞬时频率
  10. C语言程序设计圆周率,如何设计C语言程序输出圆周率小数点后的1000位?请大侠出手啊。...