精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

你懂的成人av| 精品精品导航| 久久一区二区三区四区五区 | 精品影片在线观看的网站| 色综合久久六月婷婷中文字幕| 精品中文字幕人| 日本成人一级片| 欧美91大片| 亚洲欧美日韩精品久久亚洲区| 污污视频网站在线| 欧美激情网站| 成人免费一区二区三区视频 | 天天综合成人网| 三级在线观看视频| 亚洲人成网站精品片在线观看| 国产一区二区精品免费| 岳乳丰满一区二区三区| 合欧美一区二区三区| 在线中文字幕日韩| 一起草在线视频| 国产欧美视频在线| 日韩欧亚中文在线| 国产美女永久无遮挡| 99reav在线| 久久综合九色综合欧美就去吻 | ●精品国产综合乱码久久久久| 国产欧美综合精品一区二区| 91在线视频国产| 国产日韩专区| 欧美激情欧美激情| 任你操精品视频| 一道本一区二区三区| 精品久久久久久无| 亚洲欧美手机在线| 欧美与亚洲与日本直播| 精品国产精品自拍| 国产精品久久久久7777| 97超碰在线公开在线看免费| 国产精品欧美一区二区三区| 日韩一区二区三区高清| 老熟妇高潮一区二区高清视频| 激情综合色播五月| 国产精品视频免费在线| 无码人妻丰满熟妇奶水区码| 久久aⅴ乱码一区二区三区| 久久男人的天堂| 欧美日韩在线视频免费| 伊人成综合网| 久久在精品线影院精品国产| 97在线观看免费高| 国产精品7m凸凹视频分类| 国产亚洲欧美日韩精品| 亚洲v国产v欧美v久久久久久| 婷婷成人综合| 亚洲乱亚洲乱妇无码| 免费中文字幕av| 欧美日韩破处| 精品一区精品二区| 加勒比一区二区| 台湾佬综合网| 亚洲深夜福利网站| 国产成人免费观看网站| 日韩中字在线| 播播国产欧美激情| 免费视频一二三区| 亚洲美女视频在线免费观看| 97国产精品视频| 亚洲免费在线视频观看| 日韩在线观看一区二区| 国产精品网站入口| 国产美女明星三级做爰| 国产91高潮流白浆在线麻豆| 国产女主播一区二区| 日夜干在线视频| 欧美激情一区二区三区在线| 中文字幕中文字幕99| 亚洲www色| 天天综合天天做天天综合| 国模杨依粉嫩蝴蝶150p| 全球中文成人在线| 日韩精品一区二区三区在线播放 | 久久亚洲道色| 亚洲性猛交xxxxwww| 女人裸体性做爰全过| 88国产精品视频一区二区三区| 九九热这里只有精品6| 日韩精品一区二区av| 日韩国产欧美在线观看| 亚洲tv在线观看| 天堂中文在线资源| 中国色在线观看另类| 青青草综合在线| 欧美日韩大片| 欧美一区二区三区成人| 在线观看国产网站| 999精品在线| 7m精品福利视频导航| 中文字幕在线视频第一页| 国产精品1区2区| 欧美二区三区| 大地资源网3页在线观看| 图片区小说区区亚洲影院| 国产精品v日韩精品v在线观看| 国产精品毛片久久久| 按摩亚洲人久久| 特级西西444www大精品视频免费看| 久久99最新地址| 欧美成人免费在线| sm国产在线调教视频| 在线免费不卡电影| 在线中文字日产幕| 婷婷激情图片久久| 欧美一级大片在线观看| 亚洲国产精品久久久久久久| 欧美激情一区二区三区不卡| 欧美剧在线免费观看网站 | 亚洲欧洲精品在线| 黄色在线看片| 欧美色涩在线第一页| 中国xxxx性xxxx产国| 91亚洲自偷观看高清| 日本中文字幕久久看| 黄色福利在线观看| 亚洲精品乱码久久久久久黑人 | 日韩精品久久久久久久| 狠狠色伊人亚洲综合成人| 日韩国产精品一区二区三区| 免费毛片b在线观看| 精品日韩99亚洲| 疯狂撞击丝袜人妻| 蜜桃91丨九色丨蝌蚪91桃色| 欧美日韩高清免费| 人在线成免费视频| 亚洲国产一区自拍| 久久香蕉精品视频| 国产精品综合二区| 日本女人高潮视频| 视频91a欧美| 最近2019中文字幕一页二页| 国产91av在线播放| 国产婷婷色一区二区三区四区 | 青娱乐国产盛宴| 九九视频精品免费| 在线观看欧美一区| 天天综合91| 久久精品成人欧美大片| 亚洲天堂avav| 一区免费观看视频| 中文字幕第一页在线视频| 欧美1级片网站| 91精品国产自产在线| 很黄的网站在线观看| 5566中文字幕一区二区电影| 乱h高h女3p含苞待放| 极品少妇一区二区| 今天免费高清在线观看国语| 欧洲精品99毛片免费高清观看| 色综合91久久精品中文字幕| 亚洲国产一二三区| 亚洲v精品v日韩v欧美v专区 | 天天躁日日躁成人字幕aⅴ| 69av视频在线播放| 免费国产在线观看| 欧美三级在线看| 尤物在线免费视频| 国产成人精品亚洲日本在线桃色 | 极品在线视频| 亚洲男人天堂视频| 怡春院在线视频| 亚洲免费在线视频| 国产精品手机在线观看| 蜜桃av综合| 中文字幕一区二区三区精彩视频| 国产精久久一区二区| 久久久久久这里只有精品| 在线观看xxx| 精品视频一区 二区 三区| 老熟妇高潮一区二区三区| 粉嫩嫩av羞羞动漫久久久| 精品国产一二三四区| 日韩欧美精品综合| 99蜜桃在线观看免费视频网站| 韩国成人二区| 在线成人中文字幕| 精品人妻一区二区三区三区四区| 午夜精品久久久久久久| 中文字幕第69页| 成人综合在线网站| 日本中文字幕高清| 精品99视频| 日本精品一区二区| 黄色一级在线视频| 免费极品av一视觉盛宴| 天天插天天干天天操| 色综合久久久久| 久久久久久久麻豆| 成人国产精品免费网站| 欧美激情精品久久久久久小说| 仙踪林久久久久久久999| 国产亚洲精品久久飘花| 97成人超碰| 韩国视频理论视频久久| 色综合久久久久综合一本到桃花网| 日韩精品一区二区三区中文不卡| 日本丰满少妇做爰爽爽| 亚洲中国最大av网站| 一本色道久久88| 91丨国产丨九色丨pron| 佐山爱在线视频| 日韩在线a电影| 男女啪啪免费视频网站| 午夜精品一区二区三区国产| 欧美一区二区视频17c| 999国产精品一区| 91老司机在线| 超薄肉色丝袜脚交一区二区| 97成人在线视频| 久久亚洲导航| 欧美成人免费全部| aiai在线| 怡红院精品视频| 男人的天堂av高清在线| 亚洲激情在线观看| 成人激情四射网| 91精品国产综合久久久久久久 | 99久久久精品免费观看国产| 69堂精品视频在线播放| 欧美一级大胆视频| www欧美xxxx| 久久久久久成人| 丝袜中文在线| 久久国产精品免费视频 | 日韩伦理一区二区三区| a级国产乱理论片在线观看99| 99综合久久| 国产一区玩具在线观看| 粉嫩av一区二区三区四区五区 | 97超碰国产在线| 欧美性一级生活| 最近中文字幕av| 在线观看日韩电影| 亚洲成人av网址| 国产一区二区三区不卡在线观看| 91视视频在线观看入口直接观看www | 久久视频在线观看| 性欧美69xoxoxoxo| 日韩精品高清在线| 黄色三级网站在线观看| 欧美大片在线观看一区| 99在线观看免费| 日韩欧美视频一区| 欧美日韩综合久久| 欧美深性狂猛ⅹxxx深喉 | 强伦女教师2:伦理在线观看| 不卡中文字幕| 亚洲图片在线观看| 久久美女精品| 国产手机视频在线观看| 女生裸体视频一区二区三区| 天天综合五月天| 婷婷精品在线观看| 美腿丝袜亚洲三区| 日韩欧美在线观看视频| 欧美三级午夜理伦三级富婆| 日韩av在线发布| 国产色视频在线播放| 国模娜娜一区二区三区| 青娱乐国产精品视频| 国产精品主播直播| 亚洲香蕉中文网| 26uuu另类欧美亚洲曰本| 亚洲av综合一区二区| 国产精品乱人伦中文| 午夜激情福利网| 欧美日韩国产色视频| 一区二区小视频| 精品伦理精品一区| 日本福利午夜视频在线| 中日韩美女免费视频网址在线观看 | 久久亚洲精品伦理| 国产主播中文字幕| 国产精品小仙女| 日韩精品卡通动漫网站| 国产精品区一区二区三| 久久久久亚洲AV| 在线精品视频免费播放| av免费观看网址| 亚洲精品一区二三区不卡| 麻豆传媒在线免费看| 高清欧美性猛交xxxx| 中国色在线日|韩| 91精品综合视频| 亚洲尤物av| 麻豆映画在线观看| 99精品热视频只有精品10| 久久久久久久999精品视频| 日本黄色片在线观看| 97精品视频在线| 激情久久99| 精品一区二区三区免费毛片| 999精品色在线播放| 99视频在线免费播放| 黄色日韩网站视频| 色婷婷在线影院| 亚洲欧美aⅴ...| 波多野结衣一二区| 亚洲第一天堂无码专区| 久久国产精品一区| 欧美一级在线亚洲天堂| 麻豆久久一区| 色99中文字幕| 香蕉久久夜色精品国产| 一区二区在线免费观看视频| 国产日本欧美一区二区| 久热这里只有精品在线| 欧美日韩精品免费| 久久久久久青草| 久久久久久久国产精品视频| 2019中文亚洲字幕| 欧美中文娱乐网| 国产欧美一区二区色老头| 操人视频免费看| 国产精品国产精品国产专区不片| 国产又色又爽又黄的| 精品国产免费久久| 欧美成人hd| 国产精品久久久久久一区二区| 神马久久av| 欧美 日韩 亚洲 一区| 成人午夜视频网站| www.av成人| 在线播放91灌醉迷j高跟美女 | 97se亚洲国产综合在线| 精品在线视频观看| 日韩欧美视频一区| 欧美野外wwwxxx| 97netav| 欧美在线三级| 日本少妇激三级做爰在线| 国产精品美女www爽爽爽| 国产精品露脸视频| 欧美zozozo| 成人性生交大片免费看网站 | 超碰成人在线播放| 国产精品福利影院| 人人爽人人爽人人片av| 亚洲老头同性xxxxx| 自拍偷拍欧美视频| 欧美精品在线一区| 久久精品30| 欧美 日韩 国产 成人 在线观看| 色婷婷久久久亚洲一区二区三区| 男男电影完整版在线观看| 国产精品r级在线| 国产草草浮力影院| 成人ar影院免费观看视频| 久久精品国产亚洲av无码娇色| 精品国产伦一区二区三区免费| av色在线观看| 欧美性色黄大片人与善| 日韩高清不卡在线| 黄色激情小视频| 欧美一区二区三区视频在线| 成全电影大全在线观看| 国产免费一区二区三区| 久久久噜噜噜| 五月天免费网站| 欧美大片顶级少妇| 丝袜老师在线| 亚洲性生活视频| huan性巨大欧美| 国产精品自拍首页| 久久精品日韩欧美| 日韩一卡二卡在线观看| 欧美成人国产一区二区| 精品人人视频| 亚洲欧洲日韩综合二区| 国产成人在线电影| 久久国产精品免费看| 中文字幕无线精品亚洲乱码一区| 精品国产亚洲一区二区三区在线| 很污的网站在线观看| 国产天堂亚洲国产碰碰| 精品人妻一区二区三区浪潮在线 | 精品国产区一区| 小视频免费在线观看| 亚洲精品一区二区三区樱花 | 91在线直播亚洲| 亚洲欧洲一区| 久久久久亚洲AV成人无在| 日韩精品一区二区三区在线观看 | 噜噜噜91成人网| 亚洲人做受高潮| 亚洲精品按摩视频| 日本免费在线一区| 日韩avxxx| 伊人婷婷欧美激情| 国产黄色免费在线观看| 99视频在线| 麻豆精品新av中文字幕|