Visual Studio में सुरक्षा विकास जीवनचक्र जाँच विकल्प क्या है?


81

मैं विजुअल स्टूडियो 2013 पूर्वावलोकन का उपयोग कर रहा हूं, हालांकि मुझे यकीन है कि मैंने इसे पहले के संस्करणों में देखा है। विज़ार्ड का उपयोग करके एक नया प्रोजेक्ट बनाते समय, मैं C ++, Win32 कंसोल एप्लिकेशन का चयन करता हूं, और मेरे प्रोजेक्ट पर सुरक्षा विकास जीवनचक्र जांच सक्षम करने का विकल्प है। क्या कोई यह बता सकता है कि यह विकल्प मेरे कोड / प्रोजेक्ट के लिए क्या करता है?

जवाबों:


71

/sdlस्विच वर्णन किया गया है यहाँ । यह कुछ चेतावनियों को त्रुटियों में बदल देता है, जो आपके कोड को प्रभावित नहीं करता है। इसके अलावा, यह /GSचेक को अधिक आक्रामक तरीके से लागू करता है ।

इससे बहुत अधिक उम्मीद न करें। Microsoft SDL वास्तव में 1980 की शैली C प्रोग्रामिंग के लिए एक समाधान है। यहां तक ​​कि यह 20 वीं सदी के C ++ का उपयोग करता है, आपको इसकी आवश्यकता नहीं है ईजी operator+(std::string, std::string)सुरक्षित और पोर्टेबल दोनों है। इसके विपरीत यहां Microsoft का SDL समाधान पोर्टेबल नहीं है, न ही यह सुरक्षित है - इसके पीछे /GSका विचार रनटाइम पर C स्ट्रिंग हैंडलिंग के साथ त्रुटियों को ढूंढना है और कार्यक्रम को निरस्त करना है, लेकिन परिणामों को सीमित करना लेकिन इसे सुरक्षित नहीं बनाना है।


स्ट्रिंग्स स्मृति त्रुटियों का एकमात्र कारण नहीं है। / sdl आपको अन्य बातों के अलावा, इकाईयों के चर का उपयोग करने में मदद कर सकता है।
जॉरगेन फॉग

@ JørgenFogh: आप C4700 चेतावनी का वर्णन कर रहे हैं, जिसके लिए आपको sdl की आवश्यकता नहीं है। यह एक लेवल -1 चेतावनी है; C4700 गायब होने से पहले आपको सभी चेतावनियों को बंद करना होगा । यदि आपके डेवलपर्स ऐसा कर रहे हैं, तो आपको समस्याएं मिली हैं जो एसडीएल हल नहीं करेगा।
MSalters

मुझे याद है कि कहीं-कहीं यह पढ़कर कि चेतावनी अधिक विस्तृत हो जाती है, क्योंकि / sdl एक अधिक विस्तृत स्थैतिक विश्लेषण पर स्विच करता है। मुझे याद नहीं है कि मैंने इसे कहाँ पढ़ा है।
जोर्जेन फोग

3
सीमित पॉइंटर सैनिटाइजेशन करता है। उन अभिव्यक्तियों में, जिनमें डेरेफेरेंस शामिल नहीं होते हैं और उन प्रकारों में जिनमें कोई उपयोगकर्ता-परिभाषित डिस्ट्रक्टर नहीं होता है, पॉइंटर संदर्भों को हटाने के लिए कॉल के बाद एक गैर-वैध पते पर सेट किया जाता है। यह बासी सूचक संदर्भों के पुन: उपयोग को रोकने में मदद करता है। वर्ग सदस्य आरंभीकरण करता है। स्वचालित रूप से सभी वर्ग के सदस्यों को ऑब्जेक्ट तात्कालिकता पर (कंस्ट्रक्टर चलने से पहले) शून्य करता है। यह कक्षा सदस्यों के साथ जुड़े गैर-व्यवस्थित डेटा के उपयोग को रोकने में मदद करता है जिसे कंस्ट्रक्टर स्पष्ट रूप से प्रारंभ नहीं करता है।
Motes

1
@ वोट: आपको इसे एक अलग उत्तर के रूप में लिखना चाहिए। यह (व्युत्पन्न) उत्तर की तुलना में अधिक उपयोगी है, इस टिप्पणी के लिए रखा गया है। इसके अतिरिक्त दी गई लिंक खराब है। यह यह होना चाहिए
एहमद

2

Microsoft सुरक्षा विकास जीवनचक्र एक सॉफ्टवेयर विकास प्रक्रिया है जिसका उपयोग Microsoft द्वारा सॉफ्टवेयर सुरक्षा लागत संबंधी सॉफ़्टवेयर बग्स के रखरखाव और रखरखाव की लागत को कम करने के लिए किया जाता है।

ये मददगार हो सकते हैं:

http://download.microsoft.com/download/B/5/A/B5A89F4C-D591-4AAB-BF45-D818D80527B6/SDLServices2011.pdf

http://msdn.microsoft.com/en-us/library/windows/desktop/84aed186-1d75-4366-8e61-8d258746bopq.aspx


10
यह बहुत सारी सामग्री है। क्या वास्तव में मेरे कोड के लिए विकल्प की जाँच करता है?
नील कर्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.