मैंने हाल ही में Secure Coding in C and C++ ब्रायन सेकॉर्ड द्वारा पढ़ा है, जो CERT के लिए काम करता है।"सुरक्षित" भाषाओं में सुरक्षा शोषण
कुल मिलाकर, यह एक उत्कृष्ट पुस्तक है और मैं इसे किसी भी प्रोग्रामर है जो अभी तक इसे नहीं पढ़ लिए सिफारिश करेंगे। इसे पढ़ने के बाद, यह मेरे लिए होता है कि विभिन्न प्रकार की सुरक्षा भेद्यताएं (जैसे कोड इंजेक्शन का शोषण, बफर ओवरफ्लोज़, पूर्णांक ओवरफ्लोज़, स्ट्रिंग स्वरूपण भेद्यता आदि), प्रत्येक सुरक्षा छेद एक चीज़ पर आती है: एक स्मृति पते तक पहुंचने की क्षमता जो किसी बफर द्वारा बाध्य नहीं है जिसे वैध रूप से प्रक्रिया द्वारा आवंटित किया गया था।
दुर्भावनापूर्ण कोड इंजेक्षन, या कहीं और भेजें कार्यक्रम तर्क स्मृति पते हैं जो गिर बाहर वैध तरीके से आवंटित बफर का उपयोग करने में सक्षम होने पर पूरी तरह से निर्भर करने की क्षमता। लेकिन जावा जैसी भाषा में, यह असंभव है। सबसे खराब यह हो सकता है कि एक प्रोग्राम ArrayIndexOutOfBoundsException
के साथ समाप्त हो जाएगा, जिससे एक अस्वीकार सेवा हो सकती है।
तो वहाँ किसी भी सुरक्षा कमजोरियों जहां अमान्य स्मृति पहुंच संभव नहीं हैं जावा, जैसे "सुरक्षित" भाषाओं में संभव हो रहे हैं? (मैं यहाँ एक उदाहरण के रूप जावा का उपयोग, लेकिन वास्तव में मुझे लगता है कि अवैध स्मृति तक पहुँचता है रोकता है किसी भी भाषा में सुरक्षा कमजोरियों के बारे में जानने में दिलचस्पी रहा हूँ।)
"अवैध मेमोरी एक्सेस संभव नहीं है" - यह उपयोगकर्ता कोड से संभव नहीं है, लेकिन JVM में स्वयं भी बग हो सकते हैं। – casablanca
[ क्या जावा में बफर ओवरफ्लो है? ] (http://stackoverflow.com/questions/479701/does-java-have-buffer-overflows) एक संबंधित प्रश्न है। –
वास्तविक कार्य करने के लिए पर्याप्त शक्तिशाली भाषा में संभावित सुरक्षा भेद्यताएं हैं। –