关于HTTP和HTTPS的安全问题

关于HTTP和HTTPS的安全问题

 

 

普通HTTP请求存在的问题

 

      HTTP 本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。

 

      这里提到的中间者主要指一些网络节点,是用户数据在浏览器和百度服务器中间传输必须要经过的节点。比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等。

 

      在 HTTP 协议下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过 HTTPS 是这些劫持行为的克星,能够完全有效地防御。

 

      所以,就有了HTTPS,使用 HTTPS 协议主要是为了保护用户隐私,防止流量劫持。

 

 

 

 

 

解决方法

 

  • 使用HTTPS(方便,不过要申请证书)
  • 自己对数据进行加密,讲明文传输改为密文传输(麻烦,因为要自行进行加密解密,步骤多,容易错)
  • HTTPS + 自己对数据加密(这是最麻烦,但是比较安全)

 

 

 

 

HTTPS的特点

 

  • 内容加密。浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。
  • 身份认证。保证用户访问的是百度服务,即使被 DNS 劫持到了第三方站点,也会提醒用户没有访问百度服务,有可能被劫持
  • 数据完整性。防止内容被第三方冒充或者篡改。

 

 

 

 

HTTPS原理

 



 

流程如下:

    1. 客户端发起一个https的请求,把自身支持的一系列Cipher Suite(密钥算法套件,简称Cipher)发送给服务端。

 

 

    2. 服务端存在一个公匙和私匙。

 

 

    3. 服务端,接收到客户端所有的Cipher后与自身支持的对比,如果不支持则连接断开,反之则会从中选出一种加密算法和HASH算法以证书的形式返回给客户端 证书中还包含了 公钥 颁证机构 网址 失效日期等等。

 

 

    4. 客户端收到服务端响应后会做以下几件事

 

      (1)验证证书的合法性

 

       颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等,证书验证通过后,在浏览器的地址栏会加上一把小锁(每家浏览器验证通过后的提示不一样 不做讨论)。

 

     (2)生成随机密码

 

       如果证书验证通过,或者用户接受了不授信的证书,此时浏览器会生成一串随机数,然后用证书中的公钥加密。 

 

      (3)HASH握手信息

 

       用最开始约定好的HASH方式,把握手消息取HASH值,  然后用 随机数加密 “握手消息+握手消息HASH值(签名)”  并一起发送给服务端。

 

       在这里之所以要取握手消息的HASH值,主要是把握手消息做一个签名,用于验证握手消息在传输过程中没有被篡改过。

 

 

    5. 客户端将加密后的内容传给服务端

 

 

    6. 服务端拿到客户端传来的密文,用自己的私钥来解密握手消息取出随机数密码,再用随机数密码 解密 握手消息与HASH值,并与传过来的HASH值做对比确认是否一致。

 

 

    7. 然后用随机密码加密一段握手消息(握手消息+握手消息的HASH值 )给客户端。

 

 

    8. 客户端用随机数解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

 

       因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截也是没法解密数据的,以此保证了通信的安全

 

 

 

 

常用加密解密算法

 

  • 非对称加密算法:RSA,DSA/DSS     在客户端与服务端相互验证的过程中用的是对称加密 
  • 对称加密算法:AES,RC4,3DES     客户端与服务端相互验证通过后,以随机数作为密钥时,就是对称加密
  • HASH算法:MD5,SHA1,SHA256  在确认握手消息没有被篡改时 

 

 

 

如何抓取HTTPS的请求数据

 

      当站点由HTTP转成HTTPS后是更安全了,但是有时候要看线上的请求数据解决问题时却麻烦了,因为是HTTPS的请求,你就算拦截到了那也是加密的数据,没有任何意义。

 

抓取流程如下:

http://www.cnblogs.com/zery/p/5164795.html

 

 

 

 

HTTPS是否真的足够安全

 

HTTPS是安全的,因为有证书和加密机制做保障!

 

但是,有个可怕的方法叫“ DNS劫持 ”,简单的说黑客为了绕过HTTPS,采用了SSL层剥离的技术,黑客阻止用户和使用HTTPS请求的网站之间建立SSL连接,使用户和代理服务器(攻击者所控制的服务器)之间使用了未加密的HTTP通信。

 

工作流程如下图:



 

 工作原理

 

     1. 客户端发送域名请求给 dns

 

     2. dns通过遍历查询dns数据库,来解析此域名对应的ip,然后反馈至浏览器客户端

 

     3. 客户端通过ip与对方建立数据连接

 

     4. 问题就出在DNS服务器上,如果用户访问的DNS服务器是黑客的,然后返回的ip也是黑客预先准备好的服务器,那么用户信息就会泄露

 

 

 

 

预防DNS劫持的方法

 

    1. 从用户的角度,防止DNS劫持

 

       (1)手动设置DNS服务器,如果是自动的就百度一下自己的DNS ip,如果是国外的就要警惕了

 

       (2)修改路由器Web登陆密码,不要用过于简单的密码,也能预防被入侵

 

       (3)注意URL是否被重写了,是否是https,是否有一把小锁

 

 

    2. 服务端通过流程去预防,不要想着用户有多聪明,会上面的配置,所以要加入自己的流程来预防。

 

        流程如下(还是需要HTTPS):

        模仿https的流程,可以看草稿箱

 

    这个流程跟HTTPS的验证流程很相似,也存在验证效果,就是因为做多了几部验证的操作,让黑客无法猜测到如何访问服务器的API,即使入侵了用户的电脑,窃取到用户的账号密码,也无法登陆系统窃取用户钱财,是跟黑客一起讨论后得出的结果。

  

 

 

中间人攻击

 

       除了DNS劫持,黑客还有其他方法能够截取用户信息,如下:

 

  • DNS劫持:黑客黑了被攻击人的DNS服务器,然后每次请求都会先转到黑客的服务器后,再转到真正的服务器
  • 会话劫持:我们可以把会话劫持攻击分为两种类型:1)中间人攻击(Man In The Middle,简称MITM),2)注射式攻击(Injection);并且还可以把会话劫持攻击分为两种形式:1)被动劫持,2)主动劫持;被动劫持实际上就是在后台监视双方会话的数据流,丛中获得敏感数据;而主动劫持则是将会话当中的某一台主机“踢”下线,然后由攻击者取代并接管会话,这种攻击方法危害非常大,攻击者可以做很多事情
  • 代理服务器

 

 

注射式攻击

 

这种方式的会话劫持比中间人攻击实现起来简单一些,它不会改变会话双方的通讯流,而是在双方正常的通讯流插入恶意数据。在注射式攻击中,需要实现两种技术:

 

  • IP欺骗
  • 预测TCP序列号

       如果是UDP协议,只需伪造IP地址,然后发送过去就可以了,因为UDP没有所谓的TCP三次握手,但基于UDP的应用协议有流控机制,所以也要做一些额外的工作。对于IP欺骗,有两种情况需要用到:1)隐藏自己的IP地址;2)利用两台机器之间的信任关系实施入侵。在Unix/Linux平台上,可以直接使用Socket构造IP包,在IP头中填上虚假的IP地址,但需要root权限;在Windows平台上,不能使用Winsock,需要使用Winpacp(也可以使用Libnet)。例如在Linux系统,首先打开一个Raw Socket(原始套接字),然后自己编写IP头及其他数据。

 

 
参考
聊聊你熟悉的HTTPHTTPS 背景: 前面我们已经了解过回顾过TCP/IP相关知识了。但是作为Android开发,很多人实际上正面接触传输层的TCP协议的机会并不是很多。大部分时候我们接触的最多的还是应用层的HTTPHTTPS协议。所以这篇我们就来聊一聊HTTPHTTPS。 一、HTTP协议 HTTP协议又称应用层超文本传输协议。 1.1、HTTP URL解析与报文结构 1.1.1、URL解析 我们常常访问一个网页,发现又一大串如下的字符串。而这一大串字符串就是HTTP网络请求的URL,如... 阅读详情

相关推荐

HTTPHTTPS网络通信幽径上的安全秘钥

HTTPHTTPS是互联网两大核心通信协议,主要区别在于安全性。HTTP采用明文传输,易被窃听篡改;HTTPS通过SSL/TLS加密,实现数据加密传输身份认证。HTTPS需要CA数字证书,使用443端口,虽比HTTP多出加密开销,但可有效防止中间人攻击。如今HTTPS已成为网站标配,浏览器会标记HTTP网站为"不安全",搜索引擎也优先展示HTTPS网站。随着计算性能提升免费SSL证书普及,HTTPS在保障用户隐私数据安全方面发挥着关键作用,是构建可信网络环境的基础。

now_cn的博客 1629

http协议为何不安全?教你使用抓包抓取到登录时输入的账号密码!

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!因此,“%3D%25%25%25” 实际上是被编码的 “=%%%” 字符串。将 “%25%25%25” 转换为 “%%%”,就得到了。“=%%%”,这是一个编码后的分隔符,用于分隔两个编码的值。⑨历年CTF夺旗赛题解析。

dzqxwzoe的博客 1381

揭秘HTTPHTTPS:保障安全的网页传输协议之争

在当今信息时代,人们对于数据安全的需求越来越迫切。而在网页传输中,HTTP(Hypertext Transfer Protocol)HTTPS(Hypertext Transfer Protocol Secure)作为两种主要的传输协议,也引发了保障安全的网页传输协议之争。HTTP是一种基于文本的协议,用于在Web浏览器Web服务器之间传输数据。然而,它的不安全性使得数据容易被窃取篡改。为了解决这个问题HTTPS应运而生。

凛鼕将至的博客 1327

http网页是否能引用https资源/调用https接口?https网页是否能引用http资源/调用http接口?...

http网页引用https资源 -> 可以 http网页调用https接口 -> 可以 https网页引用http资源 -> 不行(浏览器认为不安全) 推荐解决方法,不指定具体协议,使用资源协议自适配,比如,当前为https页面,那么就是https资源,如果是http页面,那么就是http资源。具体方法超简单:<script src='//www.aa.com...

ygunoil的博客 588

一文了解https为什么是安全

目前绝大多数网站都已经切换到了https,切换的原因很简单,因为它更安全https未来会完全取代http,本文从httpshttp的简介了了解http为什么不安全以及https为什么安全。彻底搞懂HTTPS的加密原理。

Karka_的博客 1305

HTTPS 存在哪些安全问题,有什么应对方案

在日常使用中,我们可以根据遇到的实际问题,采取适当的应对方案去处理,这样可以提高 HTTPS安全性,确保数据在传输过程中的安全性。应对方案:建议在网站配置中正确使用配置,确保所有 HTTPS 配置都是正确的,这包括在 HTTP 响应中设置正确的安全头,并确保它们具有正确的值以防止各种类型的攻击。应对方案:为了解决 HTTPS 协议存在的弱点问题,我们可以持续关注最新的加密算法协议的安全性,确保使用最新的、经过广泛审查认可的加密算法协议,如 TLS 1.3。

dexunyun的博客 2374

为什么说HTTPSHTTP安全? HTTPS是如何保证安全的?

实现完整性的手段主要是摘要算法,也就是常说的散列函数、哈希函数可以理解成一种特殊的压缩算法,它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”摘要算法保证了“数字摘要”原文是完全等价的。所以,我们只要在原文后附上它的摘要,就能够保证数据的完整性比如,你发了条消息:“转账 1000 元”,然后再加上一个 SHA-2 的摘要。网站收到后也计算一下消息的摘要,把这两份“指纹”做个对比,如果一致,就说明消息是完整可信的,没有被修改可以看到,

常来常往,共同成长 1462

深入浅出HTTP/HTTPS网络安全HTTP/HTTPS的工作原理常见的网络安全问题,如XSS、CSRF、SQL注入等

深入浅出HTTP/HTTPS网络安全HTTP/HTTPS的工作原理常见的网络安全问题,如XSS、CSRF、SQL注入

哎 你看的博客 875

【计算机网络https的工作原理以及http的区别

http协议存在安全传输问题,出现了https协议,相较于http协议使用了SSL加密算法,那么https是怎么工作的?它的加密方式是怎样的?点开这篇文章,拭目以待!

借他一双眼,愿这盛世如先生所愿 1791

HTTPHTTPS的区别【面试常考】

这个是根据查阅别人的博客,并结合自己的思想总结的,发出来是对自己的检验也希望可以帮到大家;如有错误欢迎指出 HTTPHTTPS是计算机网络中很重要的知识点,面试的时候很容易被问他们的区别,可能每个人都会有自己理解; HTTP是明文传输的,传输过程中容易被拦截、修改或者伪造请求;HTTPS则是在HTTP基础上进行进行了一些信息保护,相比HTTP来说更为安全。 这是一个简单的回答,但是比较笼统,如果想要找到好的工作,中间的很多细节还是需要我们去仔细研究的。 HTTPSHTTP HTTP是什..

ppBlog 7528

HTTPHTTPS

HTTP:传输效率高,但无加密,存在安全隐患。HTTPS:传输安全,适合处理敏感信息,已成为主流。如果你是开发者,在所有生产环境中,强烈建议默认使用 HTTPS,这已经是 Web 安全的基础要求。HTTPS 解决了 HTTP 的哪些问题HTTPS 是为了解决 HTTP安全方面的重大缺陷而提出的。下面我们系统讲解 HTTPS 解决了 HTTP 的哪些核心问题HTTPS = HTTP + TLS/SSL,加密 + 认证 + 完整性保护,从根本上解决了 HTTP 无法提供的安全性保障。

qq_51508784的博客 3587

网络HTTPS——HTTP安全版本

加密解密首先需要简单了解一下 加密与解密 的概念加密:把明文经过一系列变换,形成密文解密:把密文经过一系列变换,还原成明文明文就是我们能看懂的信息,密文就是我们看不懂的东西。比如这篇博客现在就是以明文的形式显示的,但如果我将其变为火星文,所有人都看不懂,那它就变成密文了在加密与解密的过程中需要一个或者多个辅助数据,我们将其称为 「密钥」加密是上锁,解密就是开锁,无论是上锁还是解锁,都需要钥匙,也就是「密钥」

zzz6583zz的博客 1032

HTTPHTTPS详解

转载自掘金本文链接地址: HTTPHTTPS详解 计算机通信原理 互联网的关键技术就是TCP/IP协议。两台计算机之间的通信是通过TCP/IP协议在因特网上进行的。实际上这个是两个协议: TCP: Transmission Control Protocol 传输控制协议 IP: Internet Protocol 网际协议。 引自维基百科TCP/IP协议族是一个网络通信模型,以及一整个...

祈雨v的博客 2610

什么是HTTP? HTTP HTTPS 的区别?

HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范

常来常往,共同成长 1545

HTTPHTTPS

HTTPHTTPS HTTP:超文本传输协议,明文传输,80端口 超文本:文字、图片、视频、超链接等的混合体(比如HTML) HTTP状态码 状态码 含义 例子 1xx 协议处理的中间状态 2xx 成功 200、204 3xx 重定向 301、302 4xx 客户端错误(可能是报文格式有问题,服务器无法解析) 400、403、404 5xx 服务器错误 500、502 200:OK,表示发送成功 204:Not Content,只包含响应头 301:Moved P

稚与的博客 1296
上一篇: Redis几个认识误区
下一篇: 互联网系统架构的变迁
yjc0403
博客等级 码龄17年 31粉丝 439原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值