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
- 比特幣是如何保證安全的?比特幣
- 使用OWASPTopTen保證Web應用程式的安全Web
- 專案中對外暴露的http介面的安全性如何保證HTTP
- iOS中保證執行緒安全的幾種方式與效能對比iOS執行緒
- Windows安全保護機制下對埠的操作Windows
- 中國軟體企業排名(不是絕對的)
- 為什麼說HTTPS比HTTP安全? HTTPS是如何保證安全的?HTTP
- 996,絕對不是福氣!996
- 如何保證MongoDB的安全性?MongoDB
- 主執行緒中也不絕對安全的 UI 操作執行緒UI
- HTTPS是怎麼保證資料安全傳輸的?HTTP
- CodeArts如何保證客戶程式碼和應用安全?
- 面對流量洪峰,Kafka如何保證資料安全和系統的高吞吐量?Kafka
- 【譯】一則故事:達到絕對安全的三個最佳措施
- 保證執行緒安全的技術執行緒
- 重磅解讀|趙義博:量子密碼的絕對安全只存在於理論密碼
- WEBAPI怎麼保證安全WebAPI
- 參加某技術沙龍安全講座的感想及對安全廠商的評價薦
- 保護資料安全的三種武器
- 程式碼安全 兩種程式碼漏洞
- 保護企業系統中的程式碼安全
- javascript 絕對值程式碼例項JavaScript
- 線上教育網站原始碼保證教學影片安全的方法網站原始碼
- 如何保證Linux伺服器的安全Linux伺服器
- 相對路徑轉換為絕對路徑的程式碼例項
- AbsInt — 確保程式碼安全的靜態效能分析工具
- 網站安全檢測 對帝國CMS程式碼的後臺功能性安全測試網站
- 船在港口最安全,但那並不是造船的目的
- HTTPS是如何保證連線安全:每位Web開發者都應知道的HTTPWeb
- 從技術角度解讀等保2.0對資料安全的要求
- 你並不是程式碼
- 雲端計算時代前端如何保證開原始碼的安全性前端原始碼
- “軟體定義汽車”的背後,海量程式碼安全性該如何保證?
- 對web應用程式安全的常見誤解Web
- 程式碼伺服器安全保護(二)伺服器
- 關於程式碼簽名證書種類的介紹及對比
- 如何保證海外伺服器的安全和速度?伺服器