अगर ऑपरेटिंग वातावरण एक ऐसे सुरक्षित ऑपरेटिंग सिस्टम पर आधारित नहीं है, जो अपने खुद के निष्पादन के कार्य क्षेत्र को कायम रखने में सक्षम हो और जो दुर्भावनापूर्ण विनाश से अनुप्रयोग कोड की रक्षा में सक्षम हो तथा जो भ्रष्ट कोड से प्रणाली की रक्षा करने में समर्थ हो, तो फिर उच्च स्तर की सुरक्षा संभव नहीं है। हालांकि ऐसे सुरक्षित ऑपरेटिंग सिस्टम संभव हैं और लागू किये जा चुके हैं, लेकिन अधिकांश वाणिज्यिक प्रणालियां 'निचली सुरक्षा' को अपना रही हैं क्योंकि वे सुरक्षित ऑपरेटिंग सिस्टम के द्वारा समर्थित विशेषताओं पर भरोसा नहीं करतीं (जैसे पोर्टेबिलिटी, तथा अन्य). निम्न सुरक्षा ऑपरेटिंग वातावरण में, अनुप्रयोगों को अपनी खुद की सुरक्षा में भागीदारी पर भरोसा करना चाहिए। ऐसी "सर्वोत्तम प्रयास" सुरक्षित कूटबद्धता कार्यप्रणाली होती हैं जो दुर्भावनापूर्ण नाश को रोकने के लिए अनुप्रयोग को और अधिक प्रतिरोधी बनाती हैं।

वाणिज्यिक वातावरण में, अधिकांश सॉफ्टवेयर ध्वंस अरक्षितता कूटबद्धता दोषों की कुछ ज्ञात किस्मों के परिणाम हैं। आम सॉफ्टवेयर दोषों में प्रतिरोधक अतिप्रवाह, प्रारूप स्ट्रिंग अरक्षितता, पूर्णांक अतिप्रवाह और कोड/कमांड इंजेक्शन शामिल हैं। इस पर तत्काल ध्यान दिया जाना चाहिए कि सभी पूर्ववर्ती दोषों के सामान्य वर्ग के विशिष्ट उदाहरण हैं, जहां की स्थिति में तथाकथित "डेटा" दरअसल अन्तर्निहित अव्यक्त या सुस्पष्ट, निष्पादन योग्य निर्देशों का चतुराई के साथ इस्तेमाल करते हैं।

सी (C) और सी++ (C++) जैसी कुछ आम भाषाएं इन सभी दोषों के लिए असुरक्षित हैं ("सीकोर्ड (Seacord), "सी और सी++ में सिक्योर कोडिंग"" देखें). अन्य भाषाएं, जैसे कि जावा, इन दोषों के लिए और अधिक प्रतिरोधी होती हैं, लेकिन फिर भी कोड/कमांड इंजेक्शन और अन्य सॉफ्टवेयर दोष प्रवण होती हैं, जो विध्वंस लाती हैं।

हाल ही में एक और खराब कोडिंग अभ्यास जांच के दायरे में आया है; जिसे डैंगलिंग प्वाइंटर्स कहते हैं। जुलाई 2007 में पहली बार इस विशेष समस्या के ज्ञात कारनामे का पता चला. इसके सामने आने से पहले भी इस समस्या की जानकारी थी, लेकिन इसे अकादमिक माना जाता था और व्यावहारिक उपलब्धि नहीं माना जाता था।

दुर्भाग्यवश, "सुरक्षित कोडिंग" कार्यप्रणाली का कोई सैद्धांतिक मॉडल नहीं है और न ही व्यावहारिक रूप से साध्य ही है, अब तक तंत्रों की किस्में बहुत अधिक व्यापक हैं और उनको काम में लगा सकने के तरीके विचित्र हैं। दिलचस्प बात है कि इस तरह की अरक्षितता अक्सर ही पुरातन दर्शनों से उत्पन्न होती हैं जिनमें कंप्यूटरों को कुछ चुनिंदा लोगों द्वारा उपयोग की जाने वाली एक कठिनाई से प्रसारित सत्ता मान लिया गया है, उनमें से सभी व्यर्थ उच्च शिक्षित, सुप्रशिक्षित शिक्षाविद थे, लेकिन उनके मन में मानव जाति की भलाई की भावना थी। इस प्रकार, यह काफी हानिरहित माना जाता था अगर, (काल्पनिक) उदाहरण के लिए, एक फोरट्रान (FORTRAN) कार्यक्रम में एक फॉर्मेट (FORMAT) स्ट्रिंग "मुद्रण के बाद सिस्टम को बंद" ("shut down system after printing") करने वाले जे फॉर्मेट स्पेसिफायर को रख सकती थी। आखिरकार, एक सदाशयी सिस्टम प्रोग्रामर के बिना ऐसे फीचर का प्रयोग कौन करेगा? यह सोच से परे बात थी कि सॉफ्टवेयर को विनाशकारी रूप से लगाया जा सकता है।

यह ध्यान देने योग्य बात है कि, कुछ भाषाओं में, डेटा (आदर्शतः, केवल पढ़ने के लिए) और कोड (आमतौर पर पढ़ने/लिखने में) के बीच भेद अस्पष्ट होता है। लिस्प (LISP) में, विशेष रूप से, कोड और डेटा के बीच कोई अंतर नहीं होता है, दोनों एक ही रूप के होते हैं: एक एस-अभिव्यक्ति (S-expression) को कोड, या डेटा, या दोनों किया जा सकता है; और लिस्प कार्यक्रम का "उपयोगकर्ता" जो तथाकथित "डेटा" में एक निष्पादन योग्य लैम्ब्डा (LAMBDA) खंड को डाल पाता है, वह मनमाने ढंग से सामान्य व खतरनाक कार्यात्मकता प्राप्त कर सकता है। पर्ल (Perl) द्वारा इवल (eval) प्रकार्य जैसा कुछ "आधुनिक" देने से यह पर्ल कोड उत्पन्न करने में सक्षम करता है और स्ट्रिंग डेटा के छद्मवेष में इसे इन्टरप्रेटर में पेश करता है।

अंतरराष्ट्रीय साइबर अपराध रिपोर्टिंग और सहयोग अधिनियम
सुरक्षित ऑपरेटिंग सिस्टम
सुरक्षित कूटबद्धता
सुरक्षा संरचना