如何安全地访问互联网

· 浏览次数 : 7

小编点评

当我们深夜在浏览器中输入www.baidu.com时,我们往往会忽视一个事实:有多少人和我们一样,在同一时刻访问了这个网站。但是,这次让我们来探讨一下,在这个过程中,到底发生了什么,以及我们的信息是如何被共享和暴露的。 首先,你需要了解的是,当我们在浏览器中输入一个网址,比如www.baidu.com,背后其实涉及到了许多复杂的步骤和技术。 1. **域名解析**: * 当你在浏览器键入网址并按下回车时,你的计算机首先会向DNS服务器发送请求,要求将“www.baidu.com”这个域名解析成对应的IP地址。 2. **连接到服务器**: * 一旦DNS服务器找到了与之对应的IP地址,你的计算机就会尝试通过TCP协议与那台服务器建立连接。 3. **使用HTTP或HTTPS协议**: * 既然有了IP地址,接下来你的浏览器需要决定是否使用HTTP或HTTPS协议。HTTP是超文本传输协议,它不对数据内容进行加密;而HTTPS则是HTTP加上SSL/TLS协议组合形成的一种加密传输协议,对网站与客户端之间的通信内容进行加密。 4. **发送请求并接收响应**: * 使用HTTP协议时,你的浏览器会创建一个TCP连接,并通过该连接向其对应的IP地址发送HTTP请求。服务器收到请求后,会返回一个HTTP响应,其中包含了网页的内容。 * 如果你使用的是HTTPS,情况会更加安全。在这种情况下,浏览器和服务器之间会建立一个TLS握手过程,用于协商加密算法和交换密钥。发送请求时,浏览器会使用这些密钥对数据进行加密,确保即使数据被截获,也无法轻易被解密。 5. **页面渲染**: * 无论是使用HTTP还是HTTPS,一旦服务器返回了响应,你的浏览器就会开始解析HTML代码,加载各种资源(如图片、脚本等),最终渲染出一个完整的网页。 但是,这些过程并非没有风险。例如,DNS查询在HTTP请求中是明文传输的,这就意味着有可能被第三方监听到。同样,即使使用了HTTPS,如果用户的网络环境或浏览器本身存在安全漏洞,攻击者仍有可能通过诸如流量分析等技术来暴露用户的访问路径或敏感数据。 因此,为了提高访问的安全性,许多现代网站,尤其是那些提供敏感服务的网站,都会选择使用HTTPS协议加密数据传输。此外,使用VPN、代理服务器或流量混淆等技术也能在一定程度上提升隐私保护水平。 综上所述,虽然我们在访问互联网时感觉自然而然,但实际上在这一系列操作的背后,却隐藏着许多复杂而精密的过程,这些过程不仅涉及到互联网技术的每一个层面,还直接关系到我们的隐私与安全。

正文

当你深夜在浏览器中输入 www.baidu.com 时有没有想过,除了月黑风高的夜和本机的浏览记录,还有谁知道你访问了它呢?要搞清楚这件事,首先我们要了解一下访问网站时,这其中发生了什么。

如果你在 10 年之前访问网站,大概率会在浏览器的地址栏中看到这样的网址 http://www.baidu.com ,这其中网址前面的 http 表明访问网站使用的是 HTTP 协议。当你按下回车键↩︎,访问网站也拉开了序幕。我们知道 IP 地址是设备在互联网上的唯一标识,而要访问的网站是部署在互联网上的某一台设备中(服务器),那么这台设备会有一个固定的 IP 地址。那么怎么将网址和 IP 地址建立起联系呢?访问网站的第一步就是使用 DNS 服务把网址转换成服务器的 IP 地址。DNS(Domain Name System)即域名系统,就是提供域名(网址)与 IP 地址相互映射的服务,方便人们访问网站。当浏览器知道了 IP 地址后,会通过端口 80 向该 IP 地址发送 TCP 连接请求,最终给你呈现出网站的内容。简单来说,使用 HTTP 访问网站有这样几步:

  1. 浏览器向 DNS 服务器请求将网址解析为 IP 地址;
  2. 浏览器通过端口 80 向该 IP 地址发送 TCP 连接请求;
  3. 浏览器发送 HTTP 请求,接收服务器 HTTP 响应并渲染网页。

那么哪些环节会泄露隐私呢?由于 HTTP 协议不加密🔓数据,任何人都可以在数据传输过程中截获和查看信息。你的底裤会在网络出口被扒的一干二净。

如果你现在访问网站,基本上会在浏览器的地址栏中看到这样的网址 https://www.baidu.com ,这其中网址前面的 https 表明访问网站使用的是 HTTPS 协议。HTTPS 协议简单来说 HTTPS = HTTP + TLS。前面提到了 HTTP 是一种不加密的协议,数据在网络中是以明文传输的,所以并不安全。而 TLS(Transport Layer Security)是一种安全协议,可以将浏览器与服务器的通信进行加密🔐,从而向第三方隐藏网站的内容。简单来说,使用 HTTPS 访问网站有这样几步:

  1. 浏览器向 DNS 服务器请求将网址解析为 IP 地址;
  2. 浏览器通过端口 443 向该 IP 地址发送 TCP 连接请求,并开始 TLS 握手过程;
  3. 浏览器验证服务器的安全证书,和服务器协商加密算法和交换加密密钥;
  4. 浏览器发送加密的 HTTP 请求,接收服务器加密的 HTTP 响应,解密并渲染网页。

那么使用 HTTPS 后就安全了吗?虽然 HTTPS 本身是加密的,但是在访问网站的过程中还是有可能暴露你访问的网址。例如:

  • DNS 查询:即使是 HTTPS,DNS 查询默认情况下也是未加密的,这意味着在网络出口仍然能知道你访问的是哪个网站;
  • 流量分析:即使使用 HTTPS 对数据进行加密,在不知道传输内容的情况下可以对数据包的特征进行分析,当访问一些特定的网站时,可能出现大小和顺序相似的数据包,这种方式也可能暴露你访问的网站。

那么如何安全地访问互联网呢?流量识别技术的提高,网络中不断增加的监视节点,导致没有绝对的匿名性👁️。但是通常可以使用下面的技术提高访问过程中的安全性。

VPN(Virtual Private Network)即虚拟专用网络,是一种加密通讯技术。它允许用户通过加密的通道发送和接收数据,从而保护数据不被未授权的人访问或窃取。其工作原理是通过远程服务器重定向网络流量,这样真实的 IP 地址就被隐藏起来,使得网络请求对可能的监视者变得不可见。这好比将你的设备加入到另一个网络中,同时分配个另一个网络的 IP 地址。VPN 是一个统称,它有很多的具体实现,常见的协议包括 PPTP、L2TP、IPSec 和 GRE。目前,绝大部分 VPN 协议的流量特征均能被精确识别。

VPN 的传输过程

Proxy 即代理,是一种网络服务,它充当客户端和服务器之间的中介。代理服务器的主要功能是代理网络用户去获取网络信息。在客户端和目标服务器之间建立一个中介,使得客户端可以通过代理服务器的 IP 地址和位置信息来发送请求,从而隐藏客户端的真实 IP 地址和位置信息。代理就相当于一位中间人,只提供了匿名服务,并不加密传输的数据。所以还需要使用一些其他的技术对数据进行加密,例如流量混淆。流量混淆通过改变数据包的外观和行为,使得网络流量难以被识别和追踪。可以通过随机改变数据包的大小、时间间隔等特征,使流量看起来更像是随机数据,而不是特定类型的通信。也可以模仿其他常见的网络协议或应用的流量特征,使混淆后的流量看起来像是正常的网络流量。随着时间的推移,混淆特征也最终会被识别。

代理的传输过程

代理有两种常见的技术,一个是 SOCKS5,一个是 Tor。SOCKS5 是 SOCKS 协议的第五个版本,位于 OSI 模型中的第五层会话层,因此可以处理任何类型的网络流量。由于数据是以明文传输的,SOCKS5 更多用在本地代理,即同一网段下的所有设备都可以共用一个代理网络出口。Tor(The Onion Router)即洋葱路由,是一种由上千台中继服务器组成的分布式网络,用来转发网络请求,从而保护隐私性。

Tor 的传输过程

网络请求在进入 Tor 网络之前会被加密三次,然后通过选择的三个节点(入口节点、中间节点和出口节点)传输(如上图的 TOR RELAY),请求在传入下一个节点之前会被去除一次加密。每个节点只能解密一层加密,从而无法单独确定用户的身份和访问的内容。在三个节点中,第一个能够看到来自用户设备的加密 Tor 流量,但它不知道用户正在用 Tor 做什么,它仅仅能看到“这个 IP 地址正在使用 Tor”。第三个节点能够看到用户发送的 Tor 流量,但它不知道是谁发送的这些流量,如果使用了加密传输(例如 HTTPS 协议),它仅能知道目标网址。当然 Tor 也有缺点,经过了多次加密和节点的转发网络速度会变得很慢。Tor 也不能提供绝对的安全,如果监听者能够同时监测入口和出口节点,对流量进行计时关联也是可能的(如上图的 NSA美国国家安全局🫵)。

安全地访问互联网需要采取适当的措施,例如使用 HTTPS、VPN、代理等技术,但每种技术都有其优势和局限性,切记没有绝对的安全😶‍🌫️。

与如何安全地访问互联网相似的内容:

如何安全地访问互联网

当你深夜在浏览器中输入 www.baidu.com 时有没有想过,除了月黑风高的夜和本机的浏览记录,还有谁知道你访问了它呢?要搞清楚这件事,首先我们要了解一下访问网站时,这其中发生了什么。 如果你在 10 年之前访问网站,大概率会在浏览器的地址栏中看到这样的网址 http://www.baidu.c

学习文章:“浅析数据安全之密态化计算”

本文学习文章:“浅析数据安全之密态化计算” 数据安全的必要性 数据安全应保证数据产生、存储、传输、访问、使用、销毁、公开等全生命周期安全,并且需要做到保证数据处理过程的保密性、完整性、可用性。如何安全采集用户数据,并且实现安全地对用户数据进行使用,主要包括在整个数据周期中保证安全,即在数据的生产、传

Java并发Map的面试指南:线程安全数据结构的奥秘

简介 在计算机软件开发的世界里,多线程编程是一个重要且令人兴奋的领域。然而,与其引人入胜的潜力相伴而来的是复杂性和挑战,其中之一就是处理共享数据。当多个线程同时访问和修改共享数据时,很容易出现各种问题,如竞态条件和数据不一致性。 本文将探讨如何在Java中有效地应对这些挑战,介绍一种强大的工具——并

[转帖]【JVM】线程安全与锁优化

线程安全 1.定义 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果 2.分类 (1)不可变 不可变的对象一定是线程安全的,只要一个不可变对象被正确地构建出来(没有发生thi

详解Web应用安全系列(8)不足的日志记录和监控

在Web安全领域,不足的日志记录和监控是一个重要的安全隐患,它可能导致攻击者能够更隐蔽地进行攻击,同时增加了攻击被检测和响应的难度。以下是对Web攻击中不足的日志记录和监控漏洞的详细介绍。 一、日志记录不足的问题 日志缺失或不完整 关键操作未记录:如用户登录、敏感数据访问、系统管理员操作等关键操作未

基于 ActionFilters 的限流库DotNetRateLimiter使用

前言 在构建API项目时,有时出于安全考虑,防止访问用户恶意攻击,希望限制此用户ip地址的请求次数,减轻拒绝服务攻击可能性,也称作限流。接下来,我们就来学习开源库DotNetRateLimiter 如何轻松实现限流。 项目使用配置 安装Nuget包 在新建立的WebAPI项目中,通过Nuget包管理

云计算时代前端如何保证开源代码的安全性

云技术和我们的生活息息相关,日常生活中访问的网页,刷的短视频,用的云盘等都是云计算提供的服务。那在云计算时代,前端可以做什么呢?

跨域问题?如何解决?

跨域问题是指在浏览器上运行的Web应用程序试图通过XMLHttpRequest或Fetch API等方式向不同源(域名、协议或端口)的服务器发送请求时,浏览器会根据同源策略(Same-Origin Policy)阻止这种行为。同源策略是一种安全机制,用于限制来自不同源的页面对当前页面的访问。它可以防...

netty系列之: 在netty中使用 tls 协议请求 DNS 服务器

简介 在前面的文章中我们讲过了如何在netty中构造客户端分别使用tcp和udp协议向DNS服务器请求消息。在请求的过程中并没有进行消息的加密,所以这种请求是不安全的。 那么有同学会问了,就是请求解析一个域名的IP地址而已,还需要安全通讯吗? 事实上,不加密的DNS查询消息是很危险的,如果你在访问一

[转帖]Nacos 获取配置时启用权限认证

默认情况下获取 Nacos 中的配置是不需要权限认证的, 这个估计是由其使用场景决定的(绝大多数都是仅内网可访问). 今天调查了下如何在获取配置时增加权限验证以提高其安全性. 1. 启用 Nacos 的权限认证 只要 nacos.core.auth.enabled 设置为 true 就行了. ###