起因
这个锅,谁来背。
微软?
虽然微软只是用了第三方的安全供应商提供的CrowdStrike服务,但产品的主体仍然是微软,蓝屏的仍然是微软的Windows。所以,对大部分人来说,微软是责任方。
第三方?
没错,造成这次事件的原因是因为安全公司CrowdStrike,就如国内的安全大厂。
好了,安全厂商CEO说因为Windows内容更新导致,成功把锅甩给微软。
C++?
我们不知道,这次和C++有什么关系。 来看看安全研究员的分析
很好,原来是因为内存安全问题,C++继承了C的血脉,本来想给程序员一个充分的自由度,可惜,程序员是不可靠的。造成了C++不安全的一个罪名。
怎么办?除此C、C++以外,Rust是唯一一个能替代的语言。C、C++和Rust是一个level的语言。
Rust重写
无意冒犯,因为Rust特性就是消除内存安全问题。
Rust 与 C++ 的性能旗鼓相当,但是在安全性方面 Rust 会更优,特别是使用第三方库时,Rust 的严格要求会让三方库的质量明显高很多。
Rust是如何避免空指针引用
在 Rust 中,空指针引用(null pointer dereferenc++e)是一个被避免的问题,这主要归功于 Rust 的所有权和借用系统。以下是几个关键点,解释了为什么 Rust 不存在空指针引用:
Option 类型:Rust 提供了一个 Option 枚举类型,用于表示一个值可能存在也可能不存在的情况。Option 类型有两个变体:Some(T) 表示值存在,None 表示值不存在。通过使用 Option 类型,开发者必须显式地处理值不存在的情况,从而避免了空指针引用。
所有权和借用系统:Rust 的所有权和借用系统确保了在编译时对内存安全进行严格的检查。例如,借用检查器会确保在引用有效时才允许访问数据,从而避免了空指针引用。
模式匹配:Rust 的模式匹配机制使得处理 Option 类型变得非常直观和安全。通过模式匹配,开发者可以清晰地处理 Some 和 None 的情况,避免了在运行时出现空指针引用。
编译时检查:Rust 的编译器会在编译时进行大量的安全检查,包括确保引用始终有效。这使得许多潜在的空指针引用问题在编译阶段就被发现和解决。
通过这些机制,Rust 有效地避免了空指针引用问题,提供了更安全和可靠的编程环境。
以下是一个简单的 Rust 代码示例,展示了如何使用 Option 类型和模式匹配来安全地处理可能不存在的值:
fnmain(){
letsome_number:Option<i32>=Some(5);
letno_number:Option<i32>=None;
match some_number {
Some(num)=>println!("The number is: {}", num),
None=>println!("There is no number."),
}
match no_number {
Some(num)=>println!("The number is: {}", num),
None=>println!("There is no number."),
}
}
在这个示例中,Option
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...