Web如何应对流量劫持?
虽然互联网经过多年的发展,可是网站使用的底层协议仍是 HTTP,HTTP 作为一种明文传播协议,所有的传输数据都是明文,我们都知道在通信中使用明文(不加密) 内容可能会被窃听,同时网站存在被劫持的风险。
上篇《网站莫名跳转,从百度谈什么是网站劫持?》中我们讲到了搜索引擎劫持、网络劫持、浏览器劫持、路由器劫持等常见的网站劫持,面对多种方式的网站劫持,我们应该如何应对?
限制网站权限
部分网站遭遇劫持主要由于非法服务器获取了 Web 网站文件及文件夹的读写权限,针对这个问题,我们可以利用服务器的安全设置、提高网站程序的安全性,以此防范 Web 劫持。
提升网站 防 SQL 注入功能
SQL 注入通过利用 SQL 语言的特性,向 Web 数据库写入内容,获取权限,因此我们需要针对MS SQL Server 数据库中的小权限 sa 默认用户,建立一个只能访问本系统数据库的专一用户,并且为他配置最小权限。
配置 Web 站点文件夹及其操作权限
使用 Windows 系统中的超级管理员权限对 Web 站点文件和文件夹进行权限配置。将大部分人的权限配置为仅读权限,黑客在没有写权限的情况下,很难将木马程序植入,减少网站域名劫持的可能性。
定期清理 Web 网点中存在的可疑文件
不管黑客通过何种方式获取权限,在事件管理器中都会显示出异常情况,通过对异常事件和日期的分析,查看执行代码文件中是否被人注入代码或改动,并且对新增可执行代码进行清理。
使用公共114DNS
让用户绕过运营商 local DNS,使用 114 DNS(国内最大的中立缓存 DNS),这种在技术实现上有比较大的难度,成本也比较高。在现在的情况下即使用户使用公共 DNS,也并不能完全解决问题。先不论公共 DNS 是否也有在做劫持,最关键的是,运营商也会专门针对到公共 DNS 的流量做劫持。对于流量入口的把控,运营商不会放松警惕。
HttpDNS,防止 DNS 劫持
在移动客户端中加入一个域名解析模块,客户端通过 HTTP 的方式向网站的流量调度服务器请求 IP,流量调度服务器会根据用户所在位置给用户一个最优的IP。客户端在获取IP后直接用此IP来访问所需站点资源。
网站使用 HttpDNS 面临较高的成本,我们可以选择国内公有云厂商比如又拍云的 HttpDNS 调度功能,可以有效防止 DNS 劫持。
△ HttpDNS 访问原理图
HTTPS 防劫持
由于公共 DNS、HttpDNS 的部署成本过高,有一定的技术难度,并且在面对无孔不入的 DNS 劫持时难免会力有不逮。这时候网站开启 HTTPS 作为防 DNS 劫持手段之一可以高效的解决这些问题。目前绝大部分网站也都已经启用 HTTPS 来加密。HTTPS 协议就是HTTP+SSL/TLS,在 HTTP 的基础上加入 SSL /TLS 层,提供了内容加密、身份认证和数据完整性三大功能,最终目的就是为了加密数据,用于安全的数据传输。
△ HTTP 请求
△ HTTPS 请求
SSL 协议在 HTTP 请求中增加了握手阶段,并且对明文 HTTP 请求、应答进行加密。SSL 握手阶段,客户端浏览器会进行服务器身份认证,确认客户端证书证书属于该目标网站并且证书本书有效的时候,并且通信双方还会共同使用一个加密和解密的会话密钥。
在 SSL 握手阶段结束之后,服务端和客户端通过会话密钥对交互数据进行加密/解密操作,将HTTP 请求和应答经过加密之后才会发送到发送到网络上。
通过 SSL 协议对 Web 服务器的身份认证,使 DNS 劫持导致的连接错误服务器情况被发现和终止,保证 DNS 劫持无法实现。同时 HTTPS 在数据传输中对数据进行加密传输,保护数据不被窃取以及修改。
如何快速启用 HTTPS
鉴于启用HTTPS会带来大量的服务器资源消耗,目前大多数公司普遍的选择是直接使用国内的 CDN 服务,诸如又拍云等提供一站式 HTTPS 服务,简单几步就能完成全站 HTTPS 的部署。这些服务商一般都提供免费和多种付费 SSL 证书供个人和企业选择,像又拍云,光是免费类证书就有2款,而付费证书在 3-5 天内即可完成申购。
另外一种,我们可以直接在 Web 服务器上部署证书和私钥,这个网上有教程可以查看,在此就不赘述了,大家可以去网上查看教程。
总结
面对 Web 流量劫持,首先我们可以在网站层面限制读写权限,限制恶意代码的写入,其次可以通过公有 DNS 和 HttpDNS 来防止恶意 DNS 劫持。全站开启 HTTPS,加密数据传输,可以有效防止数据泄漏,同时解决 DNS 劫持的问题。
传送门:免费 SSL 证书申请入口
推荐阅读:
HTTPS系列干货(二):突破这5个技术难点,HTTPS会好用到飞起来
Web如何应对流量劫持?的更多相关文章
- Web流量劫持
BadTunnel实战之远程劫持任意内网主机流量 http://www.freebuf.com/articles/web/109345.html http://blog.csdn.net/ts__cf ...
- 【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
前言 在之前介绍的流量劫持文章里,曾提到一种『HTTPS 向下降级』的方案 -- 将页面中的 HTTPS 超链接全都替换成 HTTP 版本,让用户始终以明文的形式进行通信. 看到这,也许大家都会想到一 ...
- WiFi流量劫持—— JS脚本缓存投毒
在上一篇<WiFi流量劫持—— 浏览任意页面即可中毒>构思了一个时光机原型,让我们的脚本通过HTTP缓存机制,在未来的某个时刻被执行,因此我们可以实现超大范围的入侵了. 基于此原理,我们用 ...
- Linux-某电商网站流量劫持案例分析与思考
[前言] 自腾讯与京东建立了战略合作关系之后,笔者网上购物就首选京东了.某天在家里访问京东首页的时候突然吃惊地发现浏览器突然跳到了第三方网站再回到京东,心里第一个反应就是中木马了. 竟然有这样的事,一 ...
- 如何使用HTTPS防止流量劫持
何为流量劫持 前不久小米等六家互联网公司发表联合声明,呼吁运营商打击流量劫持.流量劫持最直观的表现,就是网页上被插入了一些乱七八糟的广告/弹窗之类的内容.比如这样: 网页右下角被插入了游戏的广告. 流 ...
- Istio 流量劫持过程
开篇 Istio 流量劫持的文章其实目前可以在servicemesher社区找到一篇非常详细的文章,可查阅:Istio 中的 Sidecar 注入及透明流量劫持过程详解.特别是博主整理的那张" ...
- 【流量劫持】躲避 HSTS 的 HTTPS 劫持
前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...
- htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站
看是否有文件上传操作(POST方法), IPREMOVED--[01/Mar/2013:06:16:48-0600]"POST/uploads/monthly_10_2012/view.ph ...
- HTTPS-能否避免流量劫持
流量劫持是什么? EtherDream在一篇科普文章<>中详细介绍了流量劫持途径和方式. 流量劫持是一种古老的攻击方式,比如早已见惯的广告弹窗等,很多人已经对此麻木,并认为流量劫持不会造成 ...
随机推荐
- Hibernate缓存和懒加载的坑你知道多少?这5个简单问题回答不上来就不敢说会用hibernate
问题1:session.flush()调用之后,懒加载还生效吗? 如果不生效,那是抛异常还是没有任何反应,或者直接返回null? 答案:生效.可以理解为在同一个session当中,懒加载只会执行一次. ...
- 搭建es6开发与非开发环境babel-browser
前言 最近打算把es6应用到项目中,但是如何在开发环境(浏览器端)直接运行es6?es6已经发布一段时间了,现在大部分是在node.js环境运行,或者通过babel编译之后运行.babel-brows ...
- 错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用户权限问题
错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用 ...
- Java虚拟机-----------Java内存区域与内存溢出异常
Java内存区域划分 Java虚拟机运行时的数据区大致可划分为五部分:方法区,堆(两部分组成Java堆内存),虚拟机栈,本地方法栈(Java栈内存),程序计数器. 1.程序计数器 程序计数器占较小的内 ...
- redis内存消耗详解
Redis所有的数据都存在内存中,相对于廉价的硬盘,内存资源还是比较昂贵的,因此如何高效利用redis内存变得非常重要. 内存消耗分析 管理内存的原理和方法 内存优化技巧 一.内存消耗 理解redis ...
- PeopleCode事件和方法只用于online界面不能用于组件接口(component interface)
在使用CI过程中,哪些方法是不能使用的.以下为PeopleBook解释的内容. 一.搜索框代码不执行:SearchInit, SearchSave, and RowSelect events 意味着使 ...
- java IO之 序列流 集合对象Properties 打印流 流对象
序列流 也称为合并流. SequenceInputStream 序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从 第一个输入 ...
- ReactiveSwift源码解析(七) Signal的CombineLatest的代码实现
本篇博客我们就来聊一下combineLatest()的使用以及具体的实现方式.在之前的<iOS开发之ReactiveCocoa下的MVVM>的博客中我们已经聊过combineLatest( ...
- Oracle存储过程、包、方法使用总结
/** *@author:zhengwei *@date:2017-04-28 *@desc:存储过程用法总结 */ CREATE OR REPLACE PROCEDURE MYPROCEDURE(P ...
- canvas一周一练 -- canvas基础学习
从上个星期开始,耳朵就一直在生病,里面长了个疙瘩,肿的一碰就疼,不能吃饭不能嗨 (┳_┳)……在此提醒各位小伙伴,最近天气炎热,一定要注意防暑上火,病来如山倒呀~ 接下来我正在喝着5块一颗的药学习ca ...