精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C++ Core Check:安全編碼準則更新

開發 后端
Rust和C++是兩門比較流行的系統級開發語言。多年來,業界對C++的關注主要是在性能上,我們也不斷地聽到來自客戶和安全研究員的反饋:他們希望C++應該在語言層面有更多的安全編碼準則。

要性能,更要安全

Rust和C++是兩門比較流行的系統級開發語言。多年來,業界對C++的關注主要是在性能上,我們也不斷地聽到來自客戶和安全研究員的反饋:他們希望C++應該在語言層面有更多的安全編碼準則。

在安全編程這個方面來說,C++經常被認為落后于Rust。

借鑒于Rust在安全編碼方面的特性,我們在Visual Studio 2019 v16.7的C++ Core Check中新增了四條編碼安全準則。讓我們來瞧瞧。

switch語句沒有default標簽

Rust中的模式匹配結構類似于C++中的switch語言結構。它們的主要差異在于,Rust要求開發者覆蓋所有的模式匹配可能性,可以通過為每個模式編寫一個顯式的處理器,或者添加一個默認的處理器(如果其他所有的模式都不匹配的話)。

舉個例子,下面的Rust代碼將不會通過編譯,因為它缺少默認的處理器。

 

C++ Core Check:安全編碼準則更新

這是一個簡潔的安全特性,因為它可以防止這種很容易發生但又不那么容易捕獲的編程錯誤。

如果switch語句中使用的是枚舉類型并且不是每個枚舉值都進行了判斷,則Visual Studio會警告開發者并發出C4061和C4062。但是,對于其他其他類型,例如整型,則沒有這個警告。

這次的版本我們引入了一個安全編碼準則:對于非枚舉類型(例如char, int),如果switch語句中沒有default處理標簽,Visual Studio將發出警告。可以在項目的規則設置中選擇一下三種不同的規則然后進行代碼分析。

  • > C++ Core Check Style Rules
  • > C++ Core Check Rules
  • > Microsoft All Rules

下面我們來使用C++來重寫上面Rust的例子。

 

C++ Core Check:安全編碼準則更新

如果我們將default標簽去掉,則Visual Studio會給出如下的警告:

 

C++ Core Check:安全編碼準則更新

switch語句中的隱式跳轉(Unannotated fallthrough)

關于Rust中的模式匹配的另外一個限制是:它們不支持在case語句中隱式跳轉。而在C++中,下面的代碼能完美的通過編譯器的檢查。

 

C++ Core Check:安全編碼準則更新

上面的C++代碼開起來非常合理,但是在case語句中進行隱式的跳轉很容易成為程序的Bug。舉個例子,如果開發者忘記在each(food)調用后添加break語句,則代碼還是會通過編譯,但是運行的結果卻大不一樣。如果工程的規模十分龐大,則對于這類的Bug將很難追蹤。

幸運的是,C++17 添加了[[fallthrough]]這樣的標注,主要目的就是在不同的case語句中進行隱式跳轉,這樣的話,在上面的例子中,開發者就可以使用這個標注來向編譯器表明他的確希望執行這種行為。

在Visual Studio 2019 v16.7中,如果代碼中沒有使用[[fallthrough]]標注的情況下出現了隱式跳轉,則編譯器會給出C26819警告。這條規則在Visual Studio執行代碼分析時會默認啟用。

 

C++ Core Check:安全編碼準則更新

為了解決上面的警告,可以在case語句中添加[[fallthrough]]標注,如下圖所示:

 

C++ Core Check:安全編碼準則更新

昂貴的拷貝操作

Rust和C++中一個主要區別是,Rust默認采用移動(move)語義,而不是拷貝(copy)。

舉個例子:

 

C++ Core Check:安全編碼準則更新

這意味著,當你確實需要拷貝語義的時候,需要使用顯式的拷貝語句,如下圖所示:

 

C++ Core Check:安全編碼準則更新

C++就不同了,它默認是拷貝語義。通常來說,這也不算什么大問題,但是有時這可能導致某些Bug。一個經常發生的例子是使用range-for語句的時候,讓我們來看一下這個例子:

 

C++ Core Check:安全編碼準則更新

在上面的代碼中,在vector中的每個原始被在每次迭代循環中被拷貝到p里。如果元素是一個大型結構,則拷貝操作將會十分昂貴,而且這種情況還不太容易看出來。

為了避免這種不必要的拷貝,我們在C++ Core Check中添加了一條的編碼準則,建議開發者移除這種拷貝操作,如下圖所示:

 

C++ Core Check:安全編碼準則更新

以下是判斷某個拷貝操作是否有必要的方法:

如果類型的大小大于平臺相關指針大小的兩倍,并且該類型不是智能指針或gsl::span, gsl::string_span或std::string_view之一,則該拷貝被認為是不必要的。這意味著對于較小的數據類型(例如整型),不會觸發該警告。對于較大的類型,例如上面示例中的Person類型,該拷貝操作被認為是昂貴(不必要)的,編譯器將發出警告。

關于這條規則的最后一點是,如果循環體中的變量是mutated,則警告也不會觸發,如下圖所示:

 

C++ Core Check:安全編碼準則更新

如果使用的容器不是const類型,則可以通過修改對象為引用類型來避免不必要的拷貝。

 

C++ Core Check:安全編碼準則更新

但是,這樣修改會導致一個新的副作用。因此,這個警告僅建議將循環變量標記為const 引用,如果無法合法地將循環變量標記為const類型,則這個警告不會觸發。

此編碼準則默認啟用。

auto類型變量的拷貝

最后一個檢查規則是有關auto類型變量的拷貝操作的。

考慮下面的Rust代碼,其中為分配了引用的變量進行類型解析。

 

C++ Core Check:安全編碼準則更新

由于Rust的要求,在大多數情況下,復制必須是顯式的,因此在上面的例子中,password類型在分配了immutable引用后會自動解析為immutable引用,并且不會執行昂貴的拷貝操作。

另一方面,考慮以下C++代碼:

 

C++ Core Check:安全編碼準則更新

在上面的代碼中,即使getPassword的返回類型是對字符串的const引用,password的類型也會被解析為std::string。結果是,PasswordManager::password的內容被復制到本地變量password中。

下面用一個返回指針的函數作為對比:

 

C++ Core Check:安全編碼準則更新

在分配引用和指向標記為auto的變量的指針之間的行為差異是不明顯的,從而可能導致不必要的拷貝和意外拷貝。

為了防止由于此行為而導致的錯誤,檢查器檢查從引用到標記為auto的變量的所有初始化實例。如果使用與范圍檢查相同的試探法將生成的拷貝操作視為昂貴,則檢查器會發出警告,建議將變量標記為const引用類型。

 

C++ Core Check:安全編碼準則更新

并且與范圍檢查一樣,只要無法將變量合法地標記為const,就不會發出此警告。

 

C++ Core Check:安全編碼準則更新

另一個不會發出警告的情況是,無論何時從臨時對象派生引用。在這種情況下,一旦臨時文件被銷毀,使用const auto引用將導致對已銷毀臨時變量的”懸掛”引用。

 

C++ Core Check:安全編碼準則更新

此編碼準則默認啟用。

總結

能看(寫)到這里,我覺得也應該是個漢子了吧。

有些編碼準則(例如聲明變量時必初始化),最好能成為你的肌肉記憶,當寫出某種代碼結構的時候,是你的肌肉,而不是大腦,來完成安全編碼原則。

最后

Microsoft Visual C++團隊的博客是我非常喜歡的博客之一,里面有很多關于Visual C++的知識和最新開發進展。大浪淘沙,如果你對Visual C++這門古老的技術還是那么感興趣,則可以經常去他們那(或者我這)逛逛。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2012-06-08 17:58:48

安全加速Check Point

2010-01-25 13:43:09

C++算術編碼

2016-01-28 14:41:06

CC++編碼

2009-07-01 09:44:31

2011-07-20 16:16:03

CC++

2017-04-14 10:00:13

云備份云端云存儲

2020-11-13 10:17:28

ENISA物聯網安全準則物聯網

2023-09-24 23:44:10

C++類型安全

2010-01-08 16:23:11

Ubuntu C++

2010-05-26 17:26:36

SVN提交更新

2015-02-04 10:49:13

Visual C++C++Windows API

2022-06-01 14:02:47

谷歌Chrome 安全團C++

2010-02-06 17:16:49

C++托管程序

2011-07-21 10:10:42

Objective-C 內存 Autoreleas

2020-08-19 15:30:04

PHP網絡安全代碼

2010-07-20 08:49:00

Objective C

2012-04-24 09:58:26

2009-07-16 10:20:21

赫夫曼編碼

2017-04-27 23:31:29

2023-06-09 09:32:52

DeepMindC++庫算法
點贊
收藏

51CTO技術棧公眾號

91亚洲国产成人精品一区二三| 国产最新在线| 噜噜噜躁狠狠躁狠狠精品视频 | 国产盗摄视频在线观看| 成人av一区二区三区在线观看| 亚洲都市激情| 欧美精品一卡二卡| 国产综合中文字幕| 91亚洲欧美| www.亚洲色图.com| 国产欧美精品日韩| 亚洲一区欧美在线| 亚洲精品va| 亚洲午夜av久久乱码| 91丨porny丨九色| 成人激情综合| 亚洲一区二区精品视频| 蜜桃传媒一区二区| 日本精品人妻无码77777| 久久久免费毛片| 欧美日韩在线播| 男人草女人视频| 国产精品一级伦理| 成人黄色网址在线观看| 成人精品一区二区三区电影黑人| 疯狂揉花蒂控制高潮h| 91精品网站在线观看| 一本到高清视频免费精品| www国产免费| av在线之家电影网站| av电影在线观看一区| 亚洲自拍偷拍色片视频| 中文字幕免费在线看| 国产精品一页| 国产69精品99久久久久久宅男| 精品人妻一区二区免费| 国产高清亚洲| 欧洲人成人精品| 日日橹狠狠爱欧美超碰| а_天堂中文在线| 亚洲自拍偷拍网站| 中文字幕の友人北条麻妃| 黄页视频在线播放| **欧美大码日韩| 亚洲免费久久| 午夜免费福利在线观看| 国产精品丝袜久久久久久app| 91精品视频网站| 在线观看毛片视频| 日本免费在线视频不卡一不卡二 | 囯产精品一品二区三区| 麻豆久久久久久| 国产在线观看91精品一区| 亚洲午夜激情视频| 久久国产麻豆精品| 国产日韩欧美日韩| 国产熟女一区二区三区五月婷| 亚洲激情一区| 欧美性视频在线| 男人天堂2024| 久久这里只有| 国产精品欧美久久久| 亚洲最新av网站| 狠狠色丁香婷综合久久| 亚洲最大的免费| 风流少妇一区二区三区91| 国产suv一区二区三区88区| 国产精品久久久久久久久久久久冷| 无码人妻精品一区二区50| 国产精品老牛| 国产精品96久久久久久| 中文字幕人妻精品一区| 国产毛片精品视频| 精品国产一区二区三区日日嗨| 国产又粗又猛又黄又爽无遮挡| 欧美日韩免费| 97在线视频国产| 中文字幕在线播| 奇米精品一区二区三区在线观看| 97国产精品视频| www.国产一区二区| 精品无人区卡一卡二卡三乱码免费卡| 97在线视频免费| 无码人妻精品一区二| 老司机一区二区| 国产精品一国产精品最新章节| 97人妻精品一区二区三区视频 | 色七七在线观看| 婷婷精品久久久久久久久久不卡| 日韩欧美在线观看视频| 黄色永久免费网站| 视频一区日韩精品| 国产亚洲精品美女久久久| 亚洲激情图片网| 精品福利电影| 国产精品私拍pans大尺度在线| 免费视频网站在线观看入口| 久久成人久久爱| 国产精品久久久久久久免费大片| 99在线观看免费| 成人网在线免费视频| 日韩欧美精品久久| 91超碰在线| 欧美日韩国产综合视频在线观看| 91麻豆精品91久久久久久清纯| 91免费在线观看网站| 天堂av在线播放| 亚洲视频在线一区二区| 日本在线观看a| 中文幕av一区二区三区佐山爱| 69堂精品视频| 免费黄色在线视频| 欧美成人首页| 国产精品久久久久久亚洲影视 | 老司机亚洲精品| 91亚洲精品久久久| 国产精品影院在线| 黑人精品xxx一区| 女同性αv亚洲女同志| 欧美美女在线| 9.1国产丝袜在线观看| 999av视频| 日本一区二区三区国色天香 | 蜜桃麻豆91| 日韩伦理av| 91精品久久久久久久99蜜桃| 丁香花五月婷婷| 免费亚洲一区| 久久久久国产精品视频| xxx.xxx欧美| 精品国偷自产国产一区| av激情在线观看| 极品少妇xxxx精品少妇| 日韩理论片在线观看| 国内激情视频在线观看| 精品国产一区二区精华| 久久久精品视频免费观看| 久久精品国产色蜜蜜麻豆| 日韩电影免费观看高清完整| 综合毛片免费视频| 日韩成人激情视频| 亚洲精品视频在线观看免费视频| 日本成人在线一区| 久久久久se| 亚洲免费福利| 亚洲欧美中文字幕| 伦av综合一区| 久久久精品综合| 无码人妻精品一区二区三区66| 不卡一区视频| 久久人人爽人人爽爽久久| 影音先锋国产在线| 中日韩av电影| 亚洲精品免费一区亚洲精品免费精品一区| 成人影院中文字幕| 欧美激情视频在线| 婷婷国产在线| 欧美日韩亚洲成人| 男女做爰猛烈刺激| 日本欧美在线看| 伊人久久大香线蕉av一区| 国产高清日韩| 久久久久久久久久亚洲| 天堂中文在线资| 欧美在线观看你懂的| 天天色影综合网| 国产精品亚洲一区二区三区在线 | 欧美日韩一二三四五区| 制服丝袜第二页| 热久久免费视频| 中文字幕第50页| 日本精品国产| 欧美亚洲一区在线| 91在线直播| 精品久久久久久最新网址| 999这里只有精品| 中文无字幕一区二区三区 | 久久久精品视频在线| 成人精品视频.| 国内外免费激情视频| 久久中文视频| 国产精品免费观看高清| a欧美人片人妖| 久久精品国产99国产精品澳门| 久草视频在线免费| 最近日韩中文字幕| 亚洲黄色免费在线观看| 美女免费视频一区二区| 69sex久久精品国产麻豆| 国产精品片aa在线观看| 亚洲一区二区久久久久久 | 韩剧1988在线观看免费完整版| 91精品国产乱码久久久久| 依依成人精品视频| 色噜噜日韩精品欧美一区二区| 99成人在线| 亚洲国产精品毛片| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 国产精品欧美一区二区| 日本动漫同人动漫在线观看| 亚洲精品一区久久久久久| 亚洲无码久久久久久久| 欧美日韩亚洲精品一区二区三区| 中文在线观看免费视频| 蜜桃视频免费观看一区| 国产特级黄色大片| 在线一区电影| 视频一区二区综合| 欧美人妖在线观看| 99精品国产一区二区| 成人免费黄色| 69视频在线播放| 欧美韩日亚洲| 日日狠狠久久偷偷四色综合免费| 国产乱淫av片免费| 色播五月激情综合网| 日韩欧美亚洲国产| 一区二区三区四区乱视频| 亚洲天堂av中文字幕| 久久青草欧美一区二区三区| 伊人久久久久久久久| 久久精品国产久精国产爱| 精品国产免费av| 国语精品一区| 国产又粗又爽又黄的视频| 欧美色婷婷久久99精品红桃| 久久精品99久久| 国产一区二区三区不卡av| 成人羞羞国产免费| 95精品视频| 国产一区二中文字幕在线看| 电影一区电影二区| 国产999精品视频| 不卡av影片| 日本精品免费观看| 国产不卡网站| 日韩美女写真福利在线观看| 亚洲精华液一区二区三区| 海角国产乱辈乱精品视频| 日本三级在线观看网站| 欧美第一黄色网| 俺来俺也去www色在线观看| 乱亲女秽乱长久久久| 超鹏97在线| 欧美美最猛性xxxxxx| 色女人在线视频| 欧美人在线观看| 久久99亚洲网美利坚合众国| 欧美激情久久久| 狂野欧美性猛交xxxxx视频| 久久99国产综合精品女同| 手机在线免费av| 国产+人+亚洲| 亚洲妇女成熟| 国产精品久久一区主播| 亚洲欧美专区| 成人免费视频网站| 露出调教综合另类| 欧美一区观看| 欧美成人milf| xxxxxx在线观看| 最新国产拍偷乱拍精品| 欧美三级一级片| 日韩精彩视频在线观看| 手机在线国产视频| 东方aⅴ免费观看久久av| 日本一区二区免费视频| 久久亚洲综合色| 性爱在线免费视频| 亚洲乱码精品一二三四区日韩在线| 中文字幕丰满孑伦无码专区| 久久久精品tv| 午夜国产福利视频| 亚洲第一福利视频在线| 日本视频免费观看| 51精品秘密在线观看| 日本韩国免费观看| 一区二区三区精品99久久| 国产在线一区二区视频| 午夜精品视频网站| 欧美高清免费| 狠狠色狠狠色综合人人| 成人在线丰满少妇av| www.好吊操| 美女视频免费一区| xxxxxx黄色| 国产精品久久久久永久免费观看| 中字幕一区二区三区乱码| 亚洲女爱视频在线| 国产69精品久久久久久久久久| 亚洲成人激情自拍| 在线观看国产精品视频| 亚洲国产精品热久久| 日本电影全部在线观看网站视频 | 中文日本在线观看| 欧美激情在线播放| 欧美黑粗硬大| 久热这里只精品99re8久| 在线精品国产| 在线观看av日韩| av成人老司机| www欧美com| 日韩欧美在线字幕| 亚洲高清精品视频| 社区色欧美激情 | 欧美男人天堂| 97久草视频| 日韩午夜电影网| 免费无码av片在线观看| 风流少妇一区二区| 日韩欧美123区| 欧洲一区在线观看| 深夜影院在线观看| 欧美精品激情在线观看| 中文幕av一区二区三区佐山爱| 91九色偷拍| 日韩精品免费| 免费在线激情视频| 岛国av在线一区| 老熟妻内射精品一区| 欧洲人成人精品| 蜜芽tv福利在线视频| 亚洲2020天天堂在线观看| 国产精品一区免费在线| 亚洲高清精品中出| 久久亚洲图片| 欧美无人区码suv| 亚洲国产成人av| 精品人妻午夜一区二区三区四区 | 人成免费在线视频| 色综合天天综合| 天堂а√在线8种子蜜桃视频| 亚洲人成在线观看| 成人爽a毛片免费啪啪| 精品视频一区二区三区四区| 狠狠入ady亚洲精品经典电影| 欧美黄色免费影院| bt7086福利一区国产| 久久久精品一区二区涩爱| 精品久久一二三区| 免费av不卡在线观看| 99久久自偷自偷国产精品不卡| 色婷婷av一区二区三区丝袜美腿| 日本一区二区在线视频| 老牛影视一区二区三区| 一本色道久久综合亚洲精品图片 | 国偷自拍第113页| 亚洲国产精品网站| 538在线观看| 国产综合第一页| 中文精品视频| 蜜桃传媒一区二区亚洲av| 欧美亚洲动漫精品| 91caoporn在线| 91网站在线免费观看| 国产精品hd| 香蕉视频黄色在线观看| 色哟哟在线观看一区二区三区| 国产男女无套免费网站| 欧美精品在线免费播放| 国语一区二区三区| 国产精品亚洲a| 日韩一区有码在线| 亚洲欧美另类综合| 日韩av快播网址| 91久久夜色精品国产按摩| 中文字幕在线视频一区二区| 亚洲成人免费视频| 欧美美乳在线| 成人国内精品久久久久一区| 中文字幕av亚洲精品一部二部| 午夜久久久精品| 亚洲视频一区二区在线| 亚洲乱码在线观看| 日本精品久久久| 国产精品x453.com| 伊人网综合视频| 色av综合在线| 在线中文字幕-区二区三区四区| 国产精品嫩草影院久久久| 欧美国产精品| 蜜乳av中文字幕| 日韩免费电影网站| 日韩免费福利视频| 日韩一二区视频| 久久精品一区二区三区av| www.日韩在线观看| 国产精品wwww| 在线欧美不卡| 午夜黄色福利视频| 日韩电影大全免费观看2023年上 | 日韩av手机在线观看| 亚洲成av人电影| 性久久久久久久久久| 日韩午夜激情免费电影| 欧美福利在线播放| 日韩一级片免费视频| 国产精品国产三级国产专播品爱网| 99re国产在线| 性欧美长视频免费观看不卡|