क्या आप सक्रिय रूप से कोडिंग करते समय सुरक्षा के बारे में सोचते हैं?


9

जब आप कोडिंग कर रहे हैं, तो क्या आप सक्रिय रूप से सोचते हैं कि आपके कोड का उन तरीकों से शोषण किया जा सकता है जो मूल रूप से ऐसा करने के लिए नहीं थे और इस प्रकार संरक्षित जानकारी तक पहुंच प्राप्त करते हैं, कमांड चलाते हैं या कुछ और जो आप अपने उपयोगकर्ताओं को नहीं करना चाहते हैं?


जब कोडिंग क्या? मैं बहुत सारी अलग-अलग चीजें करता हूं।
डेविड थॉर्नले

9
हां, अक्सर। आमतौर पर "डेमिटी के समान वाक्यांशों में, मेरे पास समय नहीं है, मुझे आशा है कि कोई भी पता नहीं लगाएगा"।
लोरी

जवाबों:


10

एक प्रकार का। अस्वीकरण: मैं एक सुरक्षा लड़का हूं;)

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


4

मैं उद्योग-मानक प्रथाओं का उपयोग करता हूं, जैसे एसक्यूएल मापदंडों का उपयोग करना। मैं .NET फ्रेमवर्क की तरह "सुरक्षित" प्लेटफार्मों का उपयोग करता हूं, और ASP.NET MVC में एंटी-फर्जी टोकन जैसी सुरक्षा सुविधाओं का लाभ उठाता हूं। मैं अपने स्वयं के एन्क्रिप्शन एल्गोरिदम नहीं लिखता हूं, लेकिन मुझे समझ में नहीं आता है कि उन एन्क्रिप्शनों को सुरक्षा लाभ के रूप में क्या प्रदान करता है, और जब मुझे उन सुरक्षा लाभों को प्राप्त करने के लिए उनका उपयोग करने की आवश्यकता होती है।

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

सुरक्षा के लिए मेरा मौलिक दृष्टिकोण, सुरक्षा उपकरणों का उपयोग करने से परे, सिस्टम के सभी संभावित इनपुट को समाप्त करना है, सिवाय इसके कि मैं उम्मीद कर रहा हूं। यदि मेरे पास एक सामाजिक सुरक्षा नंबर फ़ील्ड है, तो केवल वर्ण जो वास्तव में दिखाना चाहिए, एक विशिष्ट पैटर्न में संख्यात्मक अंक और डैश हैं।

मैं क्लाइंट और सर्वर दोनों पर उपयोगकर्ता इनपुट को मान्य करता हूं।


मैं इनबिल्ट सुरक्षा सुविधाओं का उपयोग करने से सहमत हूं, लेकिन निश्चित रूप से आपको यह सोचना होगा कि उनका उपयोग कब और कैसे करना उचित है। मुझे यह कहना है कि मैं आपके उत्पाद की सुरक्षा के बारे में सोचने के लिए दूसरों पर निर्भर होने के बारे में चिंतित हूं। उन्होंने ऐसा नहीं किया है।
माइकल शॉ

@Ptolemy: जब SQL कथन को पैरामीटर बनाना उचित नहीं है ? जालसाजी विरोधी टोकन का उपयोग करना कब उचित नहीं है? यदि डेटा संवेदनशील है, तो एन्क्रिप्शन का उपयोग करना कब उचित नहीं है?
रॉबर्ट हार्वे

एक पल के लिए एन्क्रिप्शन पर विचार करें। पहला सवाल, आप किस एन्क्रिप्शन का उपयोग करते हैं? खराब एन्क्रिप्शन का उपयोग सुरक्षा की झूठी भावना देता है। कुछ बिंदु पर आपको डेटा को डिक्रिप्ट करना होगा। आप किस बिंदु पर ऐसा करते हैं, कोड की जटिलता की तुलना में इसके लिए क्या जोखिम हैं। वास्तव में एन्क्रिप्शन आपको क्या वास्तविक सुरक्षा देता है? क्या आपका dll बाइट कोड एन्क्रिप्ट किया गया है या आपके DLL से एन्क्रिप्शन कुंजी को पढ़ा जा सकता है? यही कारण है कि, बहुत कम या बिना समझ वाले सुविधाओं का उपयोग करना खतरनाक है।
माइकल शॉ

@Ptolemy: यदि आप सुरक्षा के बारे में सोचने से मतलब रखते हैं, तो मैं सहमत हूं, आपको वास्तव में इन उपकरणों को ठीक से उपयोग करने के लिए इन चीजों को जानना होगा।
रॉबर्ट हार्वे

3

पूर्ण रूप से।

सुरक्षा ही सब कुछ है। और संख्यात्मक सॉफ्टवेयर के साथ, जो दो बार जाता है।
बस दूसरे दिन, एक उपयोगकर्ता मेरे पुराने कार्यक्रमों में बग को खोजने और उसका फायदा उठाने में कामयाब रहा। क्षति अपूरणीय थी। निचे देखो:

वैकल्पिक शब्द

यह गोल हुआ करता था।


7
इसके आगे स्पष्टीकरण की आवश्यकता है :)
टोबी एलन


2

नहीं, क्योंकि मैं एक समस्या डोमेन में काम नहीं करता जहाँ सुरक्षा प्रासंगिक है (बड़े पैमाने पर डेटा विज़ुअलाइज़ेशन SW)। मेरे पास अपने कोड (इंडेक्स चेकिंग, कंसिस्टेंसी चेकिंग, इत्यादि) पर जोर है, सुरक्षा चिंताओं के कारण नहीं, बल्कि इसलिए कि मुझे गलत कोड जल्दी और दुर्घटनाग्रस्त रूप से दिखाई देना पसंद है।


1

पूर्ण रूप से। मैं इंजेक्शन कमजोरियों के बारे में सोचता हूं, और यह भी कि मेरे व्यावसायिक तर्क एक डेस्कटॉप वातावरण बनाम वेब वातावरण में कैसे काम करेंगे, और दोनों प्रकार के वातावरण में सुरक्षा कैसे लागू की जाती है।


1

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

कोडबेस में इनपुट के लिए फ़िल्टर का एक सेट है। मैं कभी भी PHP $_GETया की जाँच नहीं करता$_POST सीधे सरणियों करता। इसके बजाय, मैं उन्हें एक समारोह के माध्यम से क्वेरी Request::get('parameter', 'filter')जैसे फ़िल्टर के साथ int, textकुछ अन्य लोगों के, और। (और Request::post()पोस्ट इनपुट के लिए, निश्चित रूप से।)


1

हाँ। जब मैंने एक मल्टीप्लेयर गेम पर काम किया, तो सभी कारनामों और धोखा देने के तरीकों से परे थे। धोखा एक गेम को पूरी तरह से नष्ट कर सकता है, खेल के सामान को बेचने से जुड़े किसी भी व्यवसाय मॉडल का उल्लेख नहीं करने के लिए। इसलिए सुरक्षा चिंताओं और छेड़छाड़ विरोधी उपायों के एजेंडे में बहुत अधिक थे। मुझे यह बेहद पसंद आया। मैंने पहले दूसरों की परियोजनाओं पर काम किया है, जहां आपको यह सुनिश्चित करने के लिए कि यह सुरक्षित था, कोड पर अधिक समय तक काम करने के लिए दोषी महसूस करना था।


0

हाँ। सुरक्षा महत्वपूर्ण है, और इसके बाद नहीं होना चाहिए; इस तथ्य के बाद सुरक्षा जोड़ना आम तौर पर पहली जगह में आवेदन में इसे डिजाइन करने की तुलना में अधिक कठिन है, और यदि आप इसे बाद में जोड़ते हैं, तो आप शायद कुछ चीजों को याद करेंगे (या बस इसे जोड़ने में परेशान न करें)।


0

सुरक्षा के सामान्य सिद्धांतों, (अखंडता, प्रमाणीकरण, प्राधिकरण) को समझें और फिर कुछ किताबें पढ़ें कि कैसे लोग सहस्राब्दी के लिए सुरक्षा के इन स्तंभों को तोड़ रहे हैं और आप लगभग आधे रास्ते में होंगे।

फिर डिजाइन और परीक्षण रणनीतियों पर कुछ अच्छी किताबें पढ़ें और आप सीखेंगे कि आपकी वास्तुकला में परीक्षण क्षमता कैसे बनाई जाए।

अब हम उस बिंदु पर पहुँचते हैं जब मैं सुरक्षा के बारे में सोचता हूँ। मैं इस बारे में सोच रहा हूं कि मैं डेटा स्रोत को कैसे मान्य कर सकता हूं, क्या इससे कोई फर्क नहीं पड़ता कि डेटा के साथ छेड़छाड़ की गई है, डेटा स्रोत कौन है, मैं कैसे सुनिश्चित हूं? यह कैसे बदल सकता है आदि ...

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

फिर परीक्षण में, आप यह सब कैसे परीक्षण करते हैं। आपकी अधिकतम डेटा प्रविष्टियां क्या हैं, यदि आप सॉफ़्टवेयर को उन सीमाओं से परे धक्का देते हैं, तो यह कैसे संभालता है? यह क्या भरोसा करता है? आप उस विश्वास को कैसे नकली बना सकते हैं?


0

हाँ।

मैंने यह जानने के लिए अतीत में पर्याप्त हैकर्स के साथ काम किया है कि वे लगातार किसी भी बड़ी साइट से समझौता करने की कोशिश कर रहे हैं, और वहाँ बहुत सारे बॉट हैं जो कि छोटी साइटें भी सुरक्षित नहीं हैं।

मैं अब हर समय एक हैकर की तरह सोचने की कोशिश करता हूं , इस बिंदु पर जहां मैं कभी-कभी अपने सहकर्मियों को आकस्मिक टिप्पणियों के साथ चिंता करता हूं कि हम हर दिन किस तरह की व्यवस्था करते हैं, इसका लाभ उठाया जा सकता है।


0

यह कुछ ऐसा होना चाहिए जो किसी भी डेवलपर को जमीन से प्रक्रिया तक अधिक या कम डिग्री तक, आवेदन आदि के आधार पर बनाता है। दुर्भाग्य से, जैसा कि देवता सुरक्षा के लिए बोली नहीं देते हैं, खरीदार ऐसा नहीं सोचते हैं ( मुझे पता है, यह थोड़ा कैच -22 है, क्योंकि अगर खरीदार सबसे सस्ती बोली चाहते हैं, तो इसमें सुरक्षा शामिल नहीं होगी)

एक डेवलपर के रूप में आप एक निश्चित लाभ प्राप्त कर सकते हैं यदि आप इस क्षेत्र में कुशल हैं - मैं विशेष रूप से बैंकों और वित्तीय सेवाओं के बारे में सोच रहा हूं, लेकिन अन्य उद्योग भी लागू हैं। वर्तमान में वे उस संगठन में प्रक्रियाओं, सुरक्षा और अन्य बारीकियों को गति देने के लिए एक नए स्नातक के लिए प्रशिक्षण में 70 - 100k का बजट दे सकते हैं। यदि आप उन्हें 30k बचा सकते हैं, तो यह एक अच्छा CV प्लस है!

यूके में, सूचना सुरक्षा पेशेवरों के संस्थान , और स्कॉटलैंड में, उत्कृष्टता और सुरक्षा और साइबर क्राइम के केंद्र समीक्षा पाठ्यक्रम सामग्री की मदद करने के लिए विश्वविद्यालयों के साथ मिलकर काम कर रहे हैं, गरीब कोडिंग के वास्तविक दुनिया के निहितार्थ और गर्मियों के प्लेसमेंट की सुविधा के लिए व्याख्यान प्रदान करते हैं (जैसे सॉफ्टवेयर डेवलपर्स कानून प्रवर्तन में धोखाधड़ी डिवीजनों में रखा गया है।) अधिकांश सहायक संगठन मुफ्त में ऐसा कर रहे हैं, क्योंकि इसमें उन्हें बड़ी मात्रा में पैसे बचाने की क्षमता है - मेरे लिए मूल्य जैसा लगता है।

(अस्वीकरण - मैं विभिन्न वैश्विक संगठनों के लिए सुरक्षा लड़का रहा हूं)

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