https为什么比http更安全?

本文深入解析HTTPS如何通过加密传输过程防止运营商劫持和中间节点篡改信息,对比HTTP,阐述HTTPS在保护用户数据安全方面的作用。

转载自品略图书馆 http://www.pinlue.com/article/2020/04/0611/3510119404305.html

  https为什么比http更安全?学过网络技术的小编来告诉你。

  防止运营商劫持

  如果你要访问.com,不是直接到.com的,需要中间有很多的服务器路由器的转发。

  假设你是可信的,.com也可信,但是中间的节点就未必。

  比如

 

  这11个节点,任何一个都可以串改你的信息和发给你的信息。

  实际上运营商劫持就是这些节点中一些小子为了盈利而修改发给你的html,嵌入他的广告。

  如果是https,这些节点个个都不知道你和.com到底在发些啥,也没有办法改,因为秘钥只有你和.com才有。

  所以,https防止的是中间节点使坏。这在我们的场景下,是非常好有价值的。

  https仅仅只是在传输过程中加密了。

  举个例子:

  A给B写信,写完邮寄给B,但是在邮寄的过程中,邮递员可能会偷偷的把信取出来看完后再放回去,收发室大爷可能也会偷偷取出来看一眼,B收到信的时候,可能在传输过程中已经被很多人看过了。如果信件中有一些银行卡账号密码什么的,可能在传输过程中已经被别人悄悄记下来了。这就是HTTP。

  A和B发现了这个问题,于是他们约定了下次写信要加密,A写信的时候加密,B收到信在解密,加密解密的方法只有A和B知道。同样在寄信的过程中,邮递员、收发室大爷偷偷看了信,但是完全看不懂,信件的内容不会泄露,就安全的多。这就是https。

  所以通常在浏览一般网页的时候,可能不会用https,而在用户登录需要输入密码时,会用https,因为登录肯定要传输用户名密码,不加密可能就会被别人看到。

  用https就告别了运营商劫持。

  什么是运营商劫持?

  运营商会在一些流量大的网站,加上一些小广告来增加收入。有时候你打开百度,会在右下角弹出一个广告,这个广告不是百度加上的,是运营商加的。

  也就像上面例子中,邮递员不但打开看了你的信件,而且在你的信件上加入小广告,让你以为是A加的。如果https加密,邮递员是无法将小广告加密放到你的信中。

  https比http安全指的是数据传输过程,而不是服务器后台的安全防护。https只能防止别人直接监听数据包拿到传输内容而已,对于服务器漏洞或者sql注入之类的,https并没有任何比http高明的地方

  简单点说就是:

  http明文,就是明信片,别人拿到了就可以看到内容。

  https是上锁的保险箱。别人拿到了也开不了锁(就目前的计算机性能来说没办法暴力破解https数据包)

 

 

<think>首先,用户在问:“我想了解在Kotlin中使用问号的原因”。意思是“我想了解在Kotlin中使用问号的原因”。 参考提供的引用: - 引用[1]: 讨论Kotlin中的空判断,使用问号和感叹号来避免空指针异常。 - 引用[2]: 解释问号的功能,特别是可空类型声明(Null Safety)。 - 引用[3]: 描述如何用问号定义可为空的变量,并提到?.操作符。 - 引用[4]: 列出Kotlin中常见的符号,包括问号用于可空类型。 - 引用[5]: 表达了用户对频繁使用问号的困扰,但强调了Kotlin的意图是解决空指针问题。 关键主题是Kotlin的问号符号(?)用于处理空安全(Null Safety),这是Kotlin的核心特性之一。 我需要用中文回答,因为系统指令指定“使用中文回答”。 回答结构:系统指令要求“回答结构清晰,帮助用户逐步解决问题”,所以我应该组织回答逻辑清晰。 核心原因:Kotlin中使用问号的主要原因是为了实现空安全(Null Safety),避免空指针异常(NullPointerExceptions)。在Java中,变量默认可空,容易导致崩溃;Kotlin中,变量默认非空,使用问号明确标记可空类型。 逐步解释: 1. **问题背景**:解释为什么需要空安全(基于引用如[1]和[5])。 2. **问号的作用**:详细说明问号在Kotlin中的用法。 - 可空类型声明:如 `var name: String? = null` - 安全调用操作符:如 `name?.length` - 其他相关操作符:如 `?:` (Elvis操作符) 和 `!!` (非空断言) 3. **原因和好处**:强调使用问号的原因:强制开发者处理空值,减少运行时崩溃。 4. **对比Java**:基于引用[5],提到与Java的区别,以及Kotlin如何改进。 5. **总结**:重申关键点。 生成相关问题:指令要求“生成相关问题”,所以回答末尾要添加相关问题。 引用格式:指令说“回答中引用的段落末尾自然地添加引用标识,例如:[^1]”。所以,我需要引用来源。 在回答中,适当引用提供的引用。例如: - 提到空安全时,引用[2]或[3]。 - 提到用户困扰时,引用[5]。 但要注意,引用是站内引用,所以用[^1], [^2]等。 最终结构: - 简介:简要回答原因。 - 详细解释:分点解释。 - 总结。 - 相关问题。 确保语言自然流畅。 </think>### Kotlin中使用问号的原因 在Kotlin编程语言中,问号(`?`)主要用于实现**空安全(Null Safety)**这一核心特性,旨在减少程序中的空指针异常(NullPointerExceptions)。以下是基于提供的引用资料,逐步解释其原因和具体用途。 #### 1. **背景:空指针问题的根源** 在传统编程语言如Java中,变量默认可以赋值为`null`(即空值),这容易导致开发者在访问未初始化的变量时引发程序崩溃。例如,Java中一个未检查的`null`引用会导致运行时错误,且编译器无法提前警示。引用[1]和[5]强调,这种错误是程序崩溃的常见原因,影响稳定性和开发效率。Kotlin通过引入问号来强制开发者明确处理空值,从而提高代码的稳健性[^1][^5]。 #### 2. **问号的核心作用:可空类型声明** Kotlin中,所有变量默认都是**非空的**(non-null),即不能赋值为`null`。如果开发者需要一个变量可能为`null`,必须使用问号显式声明为**可空类型**。这是问号最基本的功能: - **语法示例**:`var name: String? = null`(这里`String?`表示`name`可以是字符串或`null`)。 - **编译器强制检查**:编译器会确保开发者在使用可空变量前处理可能的空值,否则代码编译失败。这避免了Java中的“意外空值”问题,引用[2]和[3]指出,Kotlin通过这种方式让语言智能,减少人为错误[^2][^3]。 #### 3. **问号的其他用法:安全调用和操作符** 问号不仅用于类型声明,还结合其他操作符来实现安全的空值处理: - **安全调用操作符(`?.`)**:访问可空变量的属性或方法时,使用`?.`可以避免空指针。如果变量为`null`,表达式直接返回`null`而不崩溃。例如: ```kotlin val length = name?.length // 如果name为null,length也为null,不会崩溃 ``` - **Elvis操作符(`?:`)**:提供一个默认值来处理空值。例如: ```kotlin val safeLength = name?.length ?: 0 // 如果name为null,length默认为0 ``` - **非空断言操作符(`!!`)**:用于绕过空检查,但风险较高(可能在运行时崩溃),应谨慎使用。引用[4]详细列出了这些复合操作符,说明问号是Kotlin空安全机制的基础[^4]。 #### 4. **使用问号的根本原因和好处** - **减少崩溃风险**:Kotlin的设计哲学是“空值安全第一”。通过问号,开发者被迫在编码阶段处理空值,而非运行时才发现问题。引用[1]提到,这能大幅降低程序崩溃率,尤其适用于Android开发等场景[^1]。 - **提升代码质量和可读性**:虽然引用[5]抱怨频繁使用问号会增加代码量(如`viewFinder?.method()`),但这强制了防御性编程习惯。长期来看,它比Java的“事后检查”(如`if (viewFinder != null)`)可靠,因为编译器提供了静态验证[^5]。 - **对比Java的优势**:Java中变量默认可空,容易忽略空检查;Kotlin通过问号反转这一默认,使空值成为“显式选项”。这解决了Java的空指针痛点,引用[2]称之为Kotlin的“空安全革命”[^2]。 #### 总结 Kotlin中使用问号主要是为了强制空安全机制,防止空指针异常。它通过可空类型声明(`Type?`)和相关操作符(如`?.`、`?:`),让开发者明确处理空值,从而提高程序的健壮性。尽管初期可能增加编码复杂性(如引用[5]所述),但其长期好处在于减少崩溃和维护成本[^5]。如果您是初学者,建议从简单示例入手,逐步适应这一特性。 如果您有其他疑问,比如具体代码实战或替代方案,欢迎继续追问!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值