加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Web应用安全性: HTTP简介

发布时间:2019-03-13 10:14:53 所属栏目:建站 来源:前端小智
导读:HTTP是一个美好的东西:一个存在了20多年而没有太多变化的协议。 正如我们在前一篇文章中看到的,浏览器通过HTTP协议与web应用程序交互,这是我们深入研究这个主题的主要原因。如果用户在网站上输入他们的信用卡信息,攻击者就能在数据到达服务器之前拦截数

HTTPS 是 HTTP的一种“安全”扩展,它涉及在客户机和服务器之间建立一个公共秘密,确保我们与正确的一方进行通信,并对与公共秘密交换的消息进行加密(稍后将对此进行详细介绍)。HTTPS 的目标是提高HTTP 协议的安全性,而 H2 的目标是为其带来更快的速度。

H2 使用二进制而不是纯文本消息,支持多路复用,使用 HPACK 算法压缩报头……长话短说,H2 是对HTTP/1.1 的性能提升。

网站所有者不愿意切换到 HTTPS,因为它涉及客户端和服务器之间的额外往返(如上所述,需要在两方之间建立共同的秘密),从而减慢用户体验:使用 H2 加密 默认情况下,他们就没有借口了,因为多路复用和服务器推送等功能使其 性能优于普通的 HTTP/1.1。

HTTPS

HTTPS (HTTP Secure)的目标是让客户端和服务器通过 TLS(传输层安全性)安全地进行通信,TLS 是SSL(安全套接字层)的继承者。

TLS 所针对的问题相当简单,可以用一个简单的比喻:你的另一半中午打电话给你,当你在一个会议上,并询问你告诉他们你的网上银行账户的密码,因为他们需要执行一个银行转账,以确保你儿子的教育费用按时支付。重要的是你现在就告诉他们,否则第二天早上你的孩子可能会被学校拒之门外。

你们现在面临着两个挑战:

  • 身份验证: 确保你真的在和你的另一半说话,因为有可能别人会假装他们
  • 加密: 在同事无法理解和记录下密码的情况下进行通信

这正是 HTTPS 试图解决的问题。

为了验证你正在与谁交谈,HTTPS 使用公钥证书,这只是声明特定服务器背后身份的证书:当你通过 HTTPS 连接到 IP 地址时,该地址背后的服务器将向你提供其证书,以验证其身份。回到我们的类比,这可能只是你让你的另一半拼写他们的社会保险号。一旦验证了数字的正确性,你就获得了额外的信任级别。

但是,这并不能阻止“攻击者”学习受害者的社会安全号码,偷走你伴侣的智能手机并给你打电话。 我们如何验证来电者的身份?

你不是直接让你的另一半拼他们的社会保险号,而是打电话给你的妈妈(她正好住在你隔壁),让她去你的公寓,确保你的另一半拼的是他们的社会保险号。这增加了额外的信任级别,因为你不认为你的母亲是一个威胁,并依赖她来验证调用者的身份。

在 HTTPS 术语中,你的妈妈称为 CA,证书颁发机构 (Certificate Authority)的简称:CA 的工作是验证特定服务器后面的身份,并颁发具有自己的数字签名的证书:这意味着,当我连接到特定域时,我不会出示由域所有者生成的证书(称为自签名证书),而是由 CA 颁发。

权威机构的职责是确保他们验证域名后面的身份并相应地颁发证书:当你“订购”证书时(通常称为 SSL 证书,即使现在使用 TLS 代替 ), 当局可能会给人打电话或要求你更改 DNS 设置,以验证你是否可以控制相关域。 验证过程完成后,它将颁发证书,然后你可以在 Web 服务器上安装该证书。

像浏览器这样的客户端将连接到您的服务器并获得此证书,以便他们可以验证它看起来是真实的:浏览器与CA有某种“关系”,因为它们跟踪可信CA的列表。 为了验证证书是否真的值得信赖。 如果证书未由受信任的机构签名,则浏览器将向用户显示一条信息量大的警告:

确保你和你的另一半之间的通信安全已经完成了一半:现在我们已经解决了身份验证(验证调用者的身份),我们需要确保我们可以安全地通信,而不会在此过程中被其他人窃听。正如我提到的,你正在开会,需要拼写你的网上银行密码。你需要找到一种方法来加密你的交流,这样只有你和你的伴侣才能理解你的谈话。

您可以通过在双方之间建立共享密钥来实现此目的,并通过该密钥加密消息:例如,你可以根据婚礼日期决定使用 Caesar cipher 的变体。 

如果双方都有一段稳定的关系,就像你和你的灵魂伴侣一样,这将会很有效,因为他们可以在别人不知道的共同记忆的基础上创造一个密钥。但是,浏览器和服务器不能使用相同的机制,因为它们事先不了解彼此。

取而代之的是 Diffie-Hellman 密钥交换协议的变体,它确保没有预先知道的各方建立共享的密钥,而其他人无法“嗅探”它。这需要用到一点数学知识,这是留给读者的一个练习。  

一旦密钥建立起来,客户端和服务器就可以进行通信,而不必担心有人会截获它们的消息。即使攻击者这样做,他们也没有解密消息所需的公共密钥。

HTTPS无处不在

还在争论你是否应该在你的网站上支持HTTPS? 我没有好消息:浏览器已经开始推动用户远离不支持HTTPS 的网站,以“强迫”网络开发者提供完全加密的浏览体验。

在 “HTTPS无处不在” 的口号背后,浏览器开始反对未加密的连接——谷歌是第一个给网络开发者最后期限的浏览器供应商,它宣布从 Chrome 68(2018年7月) 开始将把HTTP网站标记为“不安全”: 

对于不使用HTTPS的网站来说,更令人担忧的是,一旦用户在网页上输入任何内容,“不安全”标签就会变成红色——这一举动应该会鼓励用户在与不支持HTTPS的网站交换数据之前三思而后行。  

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读