教懂你什么是 “ 流量劫持 ”
喜欢就 关注 我们吧!
概述 :
Wo - 公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。
今日主题:流量劫持、大家经常会看到公司的一些首页被插入一些小广告,这也就是流量劫持,今儿分享一下当前劫持的几个方法以及防劫持知识。
欢迎各位加入社群,技术交流不分语言、不分高低 。(本篇阅读预计花费:7分钟)
内容 :
浏览器可能会缓存域名解析。
用户系统中的域名映射表(hosts)会缓存域名解析。
公共域名服务器通常由 ISP(互联网服务商)提供。
公共域名服务器会缓存上一级域名服务器的结果。
公共域名服务器 TTL 到期后,会向顶级域名服务器获取信息。
那么再提一个问题:如何污染 DNS?
常见的污染 DNS 方式有:
篡改 Hosts 文件;
污染中间链路设备(路由器等);
修改 UDP内容,影响 DNS查询的结果;
入侵 DNS服务器(成本高)。
那么再提一个问题:如何抵御 DNS 劫持?
解决域名劫持的一个办法就是绕开安全性较差的 UDP协议,通过一个可信的源头来解析域名,解析方式不需要拘泥于 UDP协议,也可以通过 HTTP方式。
在 TLS 协议之上传输 DNS内容;
用 HTTP协议来传输 DNS;
用 HTTPS协议来传输 DNS;
使用自己维护的 DNS服务器(成本高)。
Content-Security-Policy (CSP)
实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。
-
指定每种资源类型可以加载执⾏的条件。 -
还可以防御 XSS 攻击。 -
也可以⽤于强迫资源使用 HTTPS 加载,降低劫持可能性。
// 通过 http 头信息
Content-Security-Policy: default-src https:
// 通过 meta 标签
<meta http-equiv="Content-Security-Policy" content="default-src https:" />
-
由于 CSP 标识本身存在于 HTML 标签或者 HTTP 请求头中,可以被攻击者可以直接移除掉。 -
规则⽐较复杂。 -
影响动态创建脚本的使⽤。
Subresource Integrity (SRI)
<script crossorigin="anonymous" integrity=“sha256-+Ec97...E=“ src=“https://a.com"></script>
-
由于 SRI 标识 本身存在于 HTML 标签中,可以被攻击者可以直接移除掉。 -
影响动态创建脚本的使⽤。 -
校验失败时影响可⽤性。 -
兼容性有限,iOS Safari 不支持
劫持监控:
-
⽅案 A:在某些省份、地区⾃建监测站,定期抓取固定资源(资源太固定,监测站数量也远远不够)。 -
-
⽅案 B:业务⽅在⾃己的 HTML 中监听资源的 Error 事件(⽆法确认问题在于劫持,也可能只是普通的 JS 出错)。 -
⽅案 C:使⽤用第三⽅方企业服务进⾏监控(服务越多成本越⾼)。 -
⽅案 D:CSP、SRI(兼容性和灵活性差,⽆法进行⾃定义逻辑)。
-
监控的级别是业务级甚至页面级,而不是某个固定的资源。 -
在业务方的 Node.js 中内置逻辑,给予了业务方自己进行降级和响应的能力。 -
监控层如果出现故障,不影响业务方的代码执行。
总结:
分割线
恭喜你、又读完了一篇文章,有什么建议 & 反馈,留言区见。
同时,为了方便大家学习、交流、分享技术干货,可以扫下面二维码 ,备注 “技术进群” 就可以通过审核。
进群的小伙伴请加右侧私人微信(备注:技术进群)
-----商务合作分隔线----
商务合作,关注公众号回复“商务合作”
本文分享自微信公众号 - 八点半技术站(gtcarry)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
高效使用Pytorch的6个技巧:为你的训练Pipeline提供强大动力
点击上方“AI公园”,关注公众号,选择加“星标“或“置顶” 作者:Eugene Khvedchenya 编译:ronghuaiyang 导读 只报告模型的Top-1准确率往往是不够的。 将train.py脚本转换为具有一些附加特性的强大pipeline 每一个深度学习项目的最终目标都是为产品带来价值。当然,我们想要最好的模型。什么是“最好的” —— 取决于特定的用例,我将把这个讨论放到这篇文章之外。我想谈谈如何从你的train.py脚本中得到最好的模型。 在这篇文章中,我们将介绍以下技巧: 用高级框架代替自己写的循环 使用另外的度量标准监控训练的进展 使用TensorBoard 使模型的预测可视化 使用Dict作为数据集和模型的返回值 检测异常和解决数值的不稳定性 免责声明:在下一节中,我将引用一些源代码。大多数都是为[Catalyst](https://github.com/catalysts -team/catalyst)框架(20.08版)定制的,可以在pytorch-toolbelt中使用。 不要重复造轮子 建议1 — 利用PyTorch生态系统的高级训练框架 PyTorch在...
- 下一篇
Mysql 高级盲注之布尔型盲注【sqli blind】
什么是盲注 [sqli blind]? 盲注通常都是专门为了对付目标页面错误处理的比较好的这种情况,也就是说,有时即使目标存在注入,因为在页面上没有任何回显,此时再想利用常规的union曝数据字段可能就不大现实了,于是后来就被人发现了盲注这种技巧,关于盲注的常用类型,主要有三种,基于时间,布尔,错误[实际遇到的非常少]的盲注,不过我们今天暂时只针对布尔型盲注做详细说明,关于其它的技巧,后续还会再单独说明,其实,也算不上什么很高级的技巧,都是一些很基础的堆砌,废话不多说,最好的办法还是直接通过实战来透彻理解盲注 此次用于实战演示的布尔型盲注点,如下,页面正常情况下是这个样子的 https://www.vgu.ac.in/photo-gallery.php?id=1 还是先简单的判断下目标是否真的存在注入,当我尝试用 ‘\’干扰时,发现数据库已经报错了 https://www.vgu.ac.in/photo-gallery.php?id=1\ 既然报错,就差不多说明,这已经是个注入点了,下面只需要想办法把它的sql语句成功闭合掉即可,也许在这里一眼看去,很可能以为它就是个普通的数字型注入点...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2配置默认Tomcat设置,开启更多高级功能