Linus:"Rust是安全的 "並不是對程式碼安全的某種絕對保證
你需要認識到:
- (a) 現實勝過幻想
- (b) 核心的需要勝過了任何Rust的需要
而*現實是,沒有絕對的保證。 永遠不會。而
"Rust是安全的 "並不是對程式碼安全的某種絕對保證。
從來都不是。
即使是使用者空間的 "安全 "Rust程式碼也會做一些事情,比如當事情出錯(溢位、分配失敗等)時就會拋panic(類似Exception)。
事情出錯時(溢位、分配失敗等),也會做出panic的事情。如果你不
意識到這不是某種真正的安全,我不知道該說些什麼。
(出錯時)不繼續完成操作,並不*比得到錯誤的答案好,它只是更容易被除錯而已。
在核心中,"panic和停止 "不是一個選項(它甚至比錯誤的答案更糟糕,因為它真的無法除錯)。
它甚至比錯誤的答案還要糟糕,因為它真的無法除錯),所以
所以核心版的 "panic "是 "WARN_ON_ONCE()警告一次",並繼續執行完成錯誤的答案。
因此,我真的*需要*Rust的人去理解這一點。
整個 "安全 "的現實不是某種絕對的的現實,以及核心方面*需要*與使用者空間傳統上稍有不同的規則的現實。
。。。
(在使用者空間)你有一個錯誤。該死的事情發生了。我們有很多的除錯工具
當發生這種錯誤情況時,會給你一個*大的警告,包括髮送自動報告給發行版製造商。然後你修復錯誤。
要把 "除錯工具給出一個巨大的警告 "看成是相當於標準Rust中的std::panic。
但是,核心應該在錯誤是繼續執行(除非你設定了 panic-on-warn),因為核心*必須*繼續,以便有 "向上遊報告 "發生情況的機會。
所以從技術上講,它與std:panic的實現非常不同:
但你基本上應該把它看作是:一個*技術上的*,而不是概念上的差異。
核心如何處理bug的規則是不同的,因為我們沒有核心檔案,
在一般情況下,我們沒有核心檔案和偵錯程式。
(是的,你可以有一個核心偵錯程式,而且你可以讓
WARN_ON_ONCE觸發偵錯程式,但是想想那些在普通使用者手中的數十億裝置)。
....
或者,你知道,如果你不能處理好核心所要求的規則,那麼就不要做核心程式設計。
因為到最後,它真的就這麼簡單。 我真的需要你理解核心中的Rust是依賴於*核心*規則的。而不是一些存在於其他地方的隨機規則。
(banq:領域規則說了算,核心領域不同於核心以外的使用核心的使用者領域)
Reddit網友:
1、Linus 真正想說的是,在核心中繼續執行比 Rust 的安全保證更重要。核心更關心這一點而不是安全性,這並不是 Rust 的錯。
2、崩潰比繼續不正確的狀態或允許非法操作要好得多?
請記住,美國範圍內的 AT&T 中斷是由崩潰和崩潰引起的崩潰引起的。
https://users.csc.calpoly.edu/~jdalbey/SWE/Papers/att_collap
3、核心崩潰可能相當於將您的裝置變磚。對於大多數使用者來說,這絕對是最糟糕的安全漏洞。
4、數量驚人的核心程式碼可以在不關閉系統的情況下執行?
5、,“Rust 是安全的”具有明確定義的技術含義,而不是“每個 Rust 程式都有絕對的程式碼安全保證”。
6、panic(拋Exception)在 Rust 意義上是“安全的”,因為它不會導致未定義的行為,沒有機會訪問未初始化或已釋放的記憶體。但這在生產化庫和二進位制檔案中也被認為是不好的做法。“永遠不要panic”不是該語言做出的承諾,但“避免panic並更喜歡返回結果”絕對是一種文化和慣用的最佳實踐。
相關文章
- 對某創新路由的安全測試路由
- gorm是如何保證協程安全的GoORM
- 保證網上購物安全的 16 種方法
- 996,絕對不是福氣!996
- 專案中對外暴露的http介面的安全性如何保證HTTP
- 為什麼說HTTPS比HTTP安全? HTTPS是如何保證安全的?HTTP
- HTTPS是怎麼保證資料安全傳輸的?HTTP
- CodeArts如何保證客戶程式碼和應用安全?
- 如何保證MongoDB的安全性?MongoDB
- 重磅解讀|趙義博:量子密碼的絕對安全只存在於理論密碼
- 程式碼安全 兩種程式碼漏洞
- 面對流量洪峰,Kafka如何保證資料安全和系統的高吞吐量?Kafka
- 保護企業系統中的程式碼安全
- 保證安全認清五種易被忽視的攻擊方式
- 保證執行緒安全的技術執行緒
- 網站安全檢測 對帝國CMS程式碼的後臺功能性安全測試網站
- 關於程式碼簽名證書種類的介紹及對比
- AbsInt — 確保程式碼安全的靜態效能分析工具
- 對web應用程式安全的常見誤解Web
- 船在港口最安全,但那並不是造船的目的
- 從技術角度解讀等保2.0對資料安全的要求
- 程式碼伺服器安全保護(二)伺服器
- 線上教育網站原始碼保證教學影片安全的方法網站原始碼
- PHP 互斥鎖:如何確保程式碼的執行緒安全?PHP執行緒
- 解讀Java8中ConcurrentHashMap是如何保證執行緒安全的JavaHashMap執行緒
- matlab實現 線性拉伸某灰度影像的對比度 程式碼 對比度拉伸Matlab
- 2019最全Python入門學習路線,不是我吹,絕對是最全Python
- 如何保證海外伺服器的安全和速度?伺服器
- “軟體定義汽車”的背後,海量程式碼安全性該如何保證?
- SSL證書中的安全站點證書對金融銀行網站的好處網站
- 真實世界中 Rust 程式的安全實踐Rust
- 自定義註解!絕對是程式設計師裝逼的利器!!程式設計師
- 程式碼簽名證書——企業程式碼安全的不二之選!
- 如何應對Kubernetes的安全挑戰?
- Python中求絕對值的三種方法詳解!Python
- Java併發程式設計—synchronized保證執行緒安全的原理分析Java程式設計synchronized執行緒
- 在計算機和網路安全領域,Security Certificates(安全證書)是用於確保資料安全、加密通訊、驗證身份等目的的工具。以下是常見的幾種安全證書型別,它們在不同場景和用途上發揮重要作用:計算機加密型別
- 如何保證Web伺服器安全Web伺服器