HTTPS与网络安全核心概念总结

HTTPS与网络安全核心概念总结

1. 起点:为什么我的HTTPS网站提示“不安全”?
  • 核心原因:混合内容 (Mixed Content)。

  • 解释:虽然主页面是通过安全的HTTPS加载的,但页面中包含了通过不安全的HTTP加载的资源(如图片、脚本、API请求等)。

  • 浏览器策略

    • 被动内容 (如图片):通常会加载,但地址栏会显示“不安全”警告。

    • 主动内容 (如API请求、脚本):现代浏览器(Chrome, Firefox等)为了安全,会直接阻止,导致网站功能异常。这就是为什么有的浏览器只警告,有的浏览器请求失败。

  • 快速解决方案

    • 演示用:临时修改浏览器设置,允许加载不安全内容。

    • 根本解决:使用Nginx等反向代理,将内部的HTTP服务通过一个安全的HTTPS路径暴露出来,然后修改前端代码调用该代理地址。

2. 核心原理:HTTP vs. HTTPS (明信片 vs. 加密保险箱)
  • HTTP (超文本传输协议):像寄一张明信片。内容是明文的,从寄件人到收件人途中的所有中间环节(WiFi路由器、运营商等)都能看到全部内容。

  • HTTPS (安全的HTTP):像寄一个加密的保险箱。在发送前,内容就被锁起来了。中间环节只能看到包裹要去哪(服务器IP和域名),但无法窥探里面的具体内容。

3. 流量如何被“中途截取”?
  • 误区:“截取”不等于通信中断,而是**“窥探”和“篡改”**。

  • 原理:您的网络请求并非直线连接到服务器,而是经过多个“中转站”(路由器)。黑客的目标就是让自己成为其中一个中转站。

  • 常见方法

    1. 设置恶意WiFi:在公共场所提供免费WiFi,您连接后,所有流量都先经过黑客的设备。

    2. ARP欺骗:在同一个局域网(如公司、咖啡馆)内,欺骗您的设备和路由器,让自己成为中间的“传话人”。

    3. DNS劫持:污染DNS服务器,当您访问www.银行.com时,给您一个指向黑客服务器的假IP地址。

4. HTTPS的魔法:握手、加密与认证
  • 混合加密机制:结合了两种加密方式的优点。

    • 核心目的总结公钥和私钥(非对称加密)的核心目的,就是为了让通信双方能安全地协商出一个只有彼此知道的“会话密钥”(对称加密密钥)。

    • 非对称加密 (公钥/私钥):慢但安全。用于在握手阶段安全地交换“会話密钥”

    • 对称加密 (会话密钥):快但密钥分发困难。用于在握手后加密所有实际的业务数据

  • 握手流程揭秘

    1. 浏览器向服务器请求连接。

    2. 服务器返回其证书,内含公钥

    3. 浏览器验证证书的合法性(由受信任的机构签发),然后随机生成一个本次通信专用的“会话密钥”

    4. 浏览器用服务器的公钥加密这个**“会话密钥”**,并发送给服务器。

    5. 服务器用自己的私钥解密,得到“会话密钥”。

    6. 至此,双方都拥有了只有他们知道的“会话密钥”。后续所有通信(请求和响应)都用这个密钥进行对称加密。

  • 关键问题解答

    • 黑客有公钥,为何无法解密服务器返回的数据?

      因为服务器返回的数据是用**“会话密钥”**加密的,而不是公钥。黑客没有会话密钥,所以无法解密。

    • 黑客为何不能自己生成会话密钥去攻击?

      因为他无法冒充服务器。如果他想进行“中间人攻击”,就必须伪造服务器的证书。而伪造的证书无法通过浏览器的身份验证,浏览器会弹出严重的安全警告,从而阻止攻击。

5. 实践篇:Python模拟HTTPS请求与会话管理
  • 底层细节的抽象

    • 在使用Python的requests库时,我们不需要手动处理TLS握手、生成会话密钥等复杂过程。这些都由库及其依赖的底层加密套件(如OpenSSL)自动完成。

    • 程序员只需要调用requests.get('https://...'),就能享受到安全的连接。

  • 会话过期的原因

    • 现代Web应用普遍使用有时效性的身份令牌 (Token) 来管理会话,以提高安全性。

    • 您从浏览器复制的请求头中,包含了这样一个短效的令牌(通常在CookieAuthorization头中)。当它过期后,服务器自然会拒绝请求。

  • 模拟“自动刷新”机制

    • 浏览器能保持登录状态,是因为它实现了**“Refresh Token (刷新令牌)”**机制。

    • 流程

      1. 登录时,服务器同时返回一个短效的Access Token和一个长效的Refresh Token

      2. 平时请求API时使用Access Token

      3. 当服务器返回401 Unauthorized错误(表示Access Token过期)时,程序自动调用刷新接口,用Refresh Token去换取一个新的Access Token

      4. 用新的Access Token重新发送刚才失败的请求。

    • 在Python中,需要编写相应的逻辑来捕获401错误,并调用刷新接口,从而实现自动化的、持久的会话。

希望这份总结能对您有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值