如何预防网站http劫持问题?

心已入冬 提交于 2019-11-27 22:26:16

  如何检测网站劫持?
  IIS7网站监控
  检测网站是否被劫持、DNS污染检测、网站打开速度检测等信息。
  如何防范HTTP劫持呢?
  根据对抗HTTP劫持的时机来分类,可以主要分为三类
  事前加密
  事中规避
  事后屏蔽
  那么接下来,让我们一个个的来说
  事前加密
  HTTPS
  很大一部分HTTP劫持,主要的原因就是在传输数据时都是明文的,使用了HTTPS后,会在HTTP协议之上加上TLS进行保护,使得传输的数据进行加密,但是使用HTTPS,一定要注意规范,必须要全站使用HTTPS,否则只要有一个地方没有使用HTTPS,明文传输就很有可能会被HTTP劫持了
  但是相应的,全部使用HTTPS,也会带来一些问题:
  性能可能有所降低,因为多了TLS握手所带来的2次RTT延时(但是基于HTTPS之上的HTTP2可以更有效的提升性能)
  由于运营商可能会使用DNS劫持,在DNS劫持之下,HTTPS的服务完全用不了了,所以会导致白屏
  加密代理
  加密代理的原理就是在用户侧和目标web服务器之间增加一个代理服务器,在用户和代理之间会经过运营商的节点,这里使用各种加密手段保证安全,在代理服务器与web服务之间使用HTTP请求,只需确认代理与web服务之间不会被HTTP劫持就可以避开HTTP劫持
  事中加密
  拆分HTTP请求数据包
  在HTTP劫持的步骤中,第一步是标记TCP连接,因此只要躲过了标识,那么后续的运营商篡改就不会存在了,有一种方式就是拆分HTTP请求
  拆分数据包就是把HTTP请求的数据包拆分成多个,运营商的旁路设备由于没有完整的TCP/IP协议栈,所以就不会被标志,而目标web服务器是有完整的TCP/IP协议栈,能接收到的数据包拼成完整的HTTP请求,不影响服务
  事后屏蔽
  通过浏览器Api,根据若干规则去匹配DOM中的节点,对匹配到的节点作拦截和隐藏
  CSP(内容安全策略),DOM事件监听等。
  CSP是浏览器附加的一层安全层,用于对抗跨站脚本与数据注入,运营商植入内容性质与数据注入类似,因此,可以用CSP对抗运营商劫持。通过在HTTP响应头或meta标签设置好规则,支持拦截和上报劫持信息的功能。
  DOM事件监听主要是监听DOMNodeInserted、DOMContentLoaded、DOMAttrModified等事件,可以在前端DOM结构发生变化时触发回调,这时补充一些检测逻辑,即可判断是不是业务的正常UI逻辑,如果不是,即可认为是来自劫持
  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!