आपको सुरक्षा-गहन साइट के लिए एक छोटा बग ठीक करने के लिए काम पर रखा गया है। कोड को देखते हुए, यह सुरक्षा छेद से भरा है। आप क्या करते हैं? [बन्द है]


109

मुझे किसी व्यक्ति द्वारा किसी साइट पर कुछ छोटे काम करने के लिए रखा गया है। यह एक बड़ी कंपनी के लिए एक साइट है। इसमें बहुत संवेदनशील डेटा होता है, इसलिए सुरक्षा बहुत महत्वपूर्ण है। कोड का विश्लेषण करने पर, मैंने देखा है कि यह सुरक्षा छिद्रों से भरा हुआ है - पढ़ें, बहुत सारी PHP फाइलें जो उपयोगकर्ता को मिलती हैं / पोस्ट इनपुट सीधे mysql अनुरोधों और सिस्टम कमांड में।

समस्या यह है कि जिस व्यक्ति ने उसके लिए साइट बनाई है वह परिवार और बच्चों के साथ एक प्रोग्रामर है जो उस नौकरी पर निर्भर है। मैं बस यह नहीं कह सकता: "आपकी साइट एक स्क्रिप्ट किडी मनोरंजन पार्क है। मुझे इसे आपके लिए फिर से तैयार करना है और आप ठीक हो जाएंगे।"

इस स्थिति में आप क्या करेंगे?

अपडेट करें:

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

अपडेट 2:

मैंने कहा कि हमेशा ऐसा नहीं होता है और सुझाव दिया जाता है कि वह इस स्टैक ओवरफ्लो प्रश्न लिंक का अनुसरण करता है ताकि सही तरीके से निपटा जा सके : PHP में SQL इंजेक्शन को कैसे रोकें? उन्होंने कहा कि वह इसका अध्ययन करेंगे और मुझे उन्हें पहले बताने के लिए धन्यवाद दिया। मुझे लगता है कि मेरा हिस्सा किया जाता है, धन्यवाद दोस्तों।


29
मैं वास्तव में एक ऐसे समाधान का आनंद लूंगा जिसमें किसी का जीवन बर्बाद न हो। मैं इसे अकेला छोड़ दूंगा, लेकिन मुझे यह भी पता है कि इस तरह के सुरक्षा छेद कुछ लोगों के जीवन को भी बर्बाद कर सकते हैं। उलझा हुआ।
MaiaVictor

18
हमलावर डेटाबेस की संरचना की जानकारी प्राप्त करने के लिए शोषण का उपयोग कर सकता है। कोई SQL इंजेक्शन भेद्यता कभी भी नीचे नहीं होनी चाहिए ।
डेव रैगर

17
डेटाबेस के किसी भी ज्ञान का उपयोग किए बिना कुछ भेद्यता का शोषण करने के लिए उसे दिखाएं। वह श * को उससे बाहर डराएगा।
व्यंग्य

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

8
@ डोकट मुद्दा एक संतुलन का है। एक प्रोग्रामर के दृष्टिकोण से, एक पत्नी और बच्चे के साथ खराब गुणवत्ता वाले प्रोग्रामर ने वास्तव में कंपनी को खतरे में डाल दिया है, और इस प्रकार पत्नियों और बच्चों के साथ कई कर्मचारियों की नौकरियां। इसके अलावा, इस मुद्दे को अक्सर "भावनात्मक प्रोग्रामर कुछ ऐसा करता है जो मेरे जीवन को कठिन बना देता है।" " यह एक तर्कहीन प्रतिक्रिया है, लेकिन लोगों को लोग हैं।
डेवार्डे

जवाबों:


114

यहां सबसे पहले और सबसे महत्वपूर्ण, सुरक्षा छेद को बंद करना प्राथमिकता है।

यदि आप सीधे उस इंजीनियर के साथ काम कर रहे हैं जिसने यह लिखा है, तो सब कुछ दस्तावेज करें और उस इंजीनियर को दें।

यदि नहीं, तो अपने नियोक्ता को बताएं कि सुरक्षा के मुद्दे शुरू में सोचा की तुलना में बड़े हैं और साइट को बहुत काम करने की आवश्यकता है । साइट पर मुख्य डेवलपर के साथ काम करने के लिए कहें, और उन्हें PHP सुरक्षा के बारे में सिखाने की पेशकश करें (व्यक्ति को एक विशेषज्ञ बनाने का वादा न करें, लेकिन क्या आप उन्हें सब कुछ जानने के लिए प्रशिक्षित करने की पेशकश करते हैं) ताकि व्यक्ति इसे ले सके तुम्हारे हो जाने के बाद।

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


1
कुल मिलाकर शानदार जवाब। विषय व्यक्तिपरक है, इसलिए मैं आपको चिह्नित करूंगा क्योंकि यह समुदाय द्वारा सबसे अधिक स्वीकार किया गया था।
MaiaVictor

1
यदि आप इंजीनियर के साथ काम कर रहे हैं, लेकिन बीवाई प्रबंधन द्वारा भुगतान किया जा रहा है, तो क्या आपको प्रबंधन को रिपोर्ट नहीं करना चाहिए? क्या होगा अगर इंजीनियर आपको धन्यवाद देता है, लेकिन जिस क्षण आप छोड़ देते हैं, रिपोर्ट को नष्ट कर देता है?
कोणार्क

या तो दोनों को बताएं, या पहले इंजीनियर को बताएं, और सत्यापित करें कि जो भी सिस्टम वे उपयोग कर रहे हैं उसमें बग बनाए और ट्रैक किए जा रहे हैं। यदि बग नहीं बने हैं, तो प्रबंधन को बताएं।
एरिक हाइड्रिक

2
मुझे यह उत्तर बेहतर लगा: प्रोग्रामर.स्टैकएक्सचेंज.com /a / 189206 / 28351 , क्योंकि नियोक्ता के लिए प्राथमिकताएं अलग हैं। पहले सुरक्षा छेद की रिपोर्ट करें, फिर छोटे बग को ठीक करें।
नाल्दी

80

अज्ञानता और अक्षमता के बीच अंतर है। एक समय था जब आपको पता नहीं था कि एसक्यूएल इंजेक्शन या तो क्या है, और यह मानने का कोई कारण नहीं है कि मूल प्रोग्रामर समस्याओं को ठीक करने में सक्षम नहीं है, जब वह उनके बारे में जागरूक हो जाता है।

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


26
+1। अज्ञानता को ठीक किया जा सकता है। अक्षमता कुछ के लिए एक कैरियर है!
मिच गेहूं

20

आपका काम उसके लिए साइट को फिर से करना नहीं है। यह छोटे बग को ठीक करने के लिए है। हालाँकि, यदि आपने सुरक्षा समस्याओं पर ध्यान दिया है, जिन्हें ठीक किया जाना चाहिए, तो आप इसे साइट के मालिक के साथ ला सकते हैं और समस्या क्या हो सकती है, इस पर जानकारी दे सकते हैं।

मूल डेवलपर के बारे में नकारात्मक रूप से झुकना या बात न करना या कोड कितना भयानक है, इस पर टिप्पणी करना। सम्मानित और पेशेवर बनें। आप समस्याओं को हल करने के लिए डेवलपर के साथ काम करने की पेशकश कर सकते हैं। जब तक आपको समस्या का समाधान करने के लिए अनुबंधित नहीं किया जाता है, तब तक इसे स्वयं ठीक करने का प्रयास न करें या कोई समाधान न दें। यदि वे आपकी सलाह का पालन करते हैं और आप गलत हैं तो वे आप पर वापस आ सकते हैं।


17

सबसे पहले और सबसे महत्वपूर्ण बात - वे आपके लिए किराए पर ली गई चीज़ को ठीक करें। यदि आप ऐसा नहीं करते हैं, तो आपको उस सलाहकार के प्रकार के रूप में माना जाएगा जो काम करने के बजाय अपने लिए अधिक काम करने में रुचि रखता है।

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


13

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

यह एक ऐसी स्थिति है, जिसमें मजबूत सॉफ्ट स्किल्स काम में आने वाली हैं क्योंकि इसे संभालने के लिए साइट पर दूसरों द्वारा किए गए काम को नहीं रखना होगा और डेवलपर को यह महसूस नहीं कराना होगा कि आप उसकी प्रतिभा पर सवाल उठा रहे हैं।

कोड / खामियों और साइट को लिखने वाले डेवलपर के लिए समान शब्दों का संदर्भ देते समय स्पष्ट रूप से "बकवास, खराब, खराब, लज्जित" जैसे शब्दों से बचें।


4
मैं जोड़ूंगा: सुनिश्चित करें कि डेवलपर को खामियों की गंभीरता के बारे में पता है और उनका कैसे फायदा उठाया जा सकता है। इस डेवलपर के पास मौजूद स्थानीय मशीन पर एक नियंत्रित 'हमला' शुरू करने के लिए समय निकालने से समस्या पर उसे शिक्षित करने में बहुत कुछ किया जा सकता है, जो आपको कोड को सख्त करने के तरीके सुझाने के लिए खुला छोड़ देता है।
एंड्रयू ग्रे

7

अन्य उत्तरों के अलावा आप जो करना चाहते हैं, वह कुछ संसाधनों पर डेवलपर को इंगित करता है कि SQL इंजेक्शन के मुद्दों का कितनी आसानी से फायदा उठाया जा सकता है, उदाहरण के लिए sqlmap जो एक स्वचालित SQL इंजेक्शन शोषण उपकरण है।

मैंने अतीत में इस तरह के मुद्दे की गंभीरता को प्रदर्शित करने के लिए जो कुछ भी प्रभावी पाया है वह दिखा रहा है कि इसके साथ क्या किया जा सकता है, इसलिए यदि आप एक देव के खिलाफ ऐसा कुछ चलाते हैं। डेटा निकालने आदि को दिखाने के लिए साइट की प्रतिलिपि आप उन्हें गंभीरता से मना सकते हैं।


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

0

पहला और एकमात्र; प्रबंधन समस्याओं के बारे में नहीं सुनना चाहता। मुझे कार्मिक प्रबंधन कार्यालय (श्वेत गृह के लिए सुरक्षा मंजूरी) से निकाल दिया गया क्योंकि मैंने बताया कि उनका सिस्टम कितना असुरक्षित था। यह कुछ समय पहले हुआ था, लेकिन प्रबंधन के रवैये में कोई बदलाव नहीं आया है।

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

SQL इंजेक्शन के रूप में मौलिक रूप से समस्या होने पर, यह इंगित करता है कि वे सस्ते थे जब उन्होंने शुरू में सिस्टम विकसित किया था, और संभावना है कि वे अब सबसे सस्ते हैं। जब आप अभी भी व्यवसाय में हैं, तो आप उनसे क्या प्राप्त कर सकते हैं, लेकिन कहीं और व्यवसाय विकास की तलाश करें।


3
"प्रबंधन समस्याओं के बारे में सुनना नहीं चाहता है" - अपने दावे का समर्थन करने के लिए कुछ तर्क / संदर्भ जोड़ें (जो मेरे लिए बहुत सुखद लगता है लेकिन यह वास्तव में कोई फर्क नहीं पड़ता) और मैं नीचे जाऊंगा
gnat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.