2013-08-09 5 views
8

ब्राउज़र में किसी जावास्क्रिप्ट चर में उपयोगकर्ता का पासवर्ड रखने से ब्राउज़र-आधारित क्लाइंट की सामान्य सुरक्षा भेद्यताओं के ऊपर और ऊपर, किसी विशिष्ट सुरक्षा भेद्यता का खुलासा होता है?जावास्क्रिप्ट चर में पासवर्ड होल्डिंग - सुरक्षा प्रभाव?

एक साधारण उदाहरण के रूप में इस टुकड़ा पर विचार करें - jsfiddle here

<label for="password">Password</label> 
<input type="password" id="password"/><br/><br/> 
<button type="button" id="pwdButton">Store password in window.password</button> 

<script> 
    function getContentsOfPasswordField() { 
     return jQuery("input#password").val(); 
    } 

    jQuery("button#pwdButton").on("click", function() { 
     window.password = getContentsOfPasswordField(); 
     alert("'" + password + "' stored in global var window.password") 
    }); 
</script> 

इस उदाहरण पासवर्ड चर वैश्विक है और पेज के जीवन भर के लिए बनी रहती है, बस इसे के रूप में खुला करने वाली हमले संभव के रूप में बनाने के लिए और सबसे खराब स्थिति परिदृश्य दें। शायद चर के दायरे/जीवनकाल को सीमित करने से हमलों के कुछ वर्गों से इसे बचाया जा सकता है?

हमला जो तुरंत दिमाग में आता है वह एक्सएसएस है, लेकिन फिर यदि क्लाइंट पहली जगह में एक्सएसएस के लिए कमजोर है, तो हमलावर कुंजी लॉगिंग द्वारा पासवर्ड भी पढ़ सकता है (this देखें) ताकि इसे एक चर में रखा जा सके। टी, जहां तक ​​मैं देख सकता हूं, एक्सएसएस हमलों के लिए भेद्यता में वृद्धि।

कृपया ध्यान दें प्रश्न की बात सच नहीं है या नहीं, ऐसा करने से है एक बुरा व्यवहार, इस क्लाइंट साइड वेब अनुप्रयोग सुरक्षा :)

+2

पासवर्ड दर्ज करने के बाद आपको पासवर्ड इनपुट पेज पर "रहना" नहीं चाहिए। 1. क्लाइंट मशीन रीडिंग पासवर्ड (ब्राउज़र मेमोरी पढ़ने से) पर अन्य सॉफ़्टवेयर की संभावना, यह ग्राहक की तरफ एक समस्या है और हमेशा लागू हो सकती है। 2. पासवर्ड पढ़ने वाले किसी ब्राउज़र एक्सटेंशन की संभावना। 3. एक ही पृष्ठ पर पासवर्ड पढ़ने के लिए किसी भी स्क्रिप्ट की संभावना। –

+1

लेकिन क्या इनमें से कोई भी संभावित हमले अधिक संभव है क्योंकि पासवर्ड एक चर में आयोजित किया जाता है? यदि दुर्भावनापूर्ण तृतीय-पक्ष सॉफ़्टवेयर जावास्क्रिप्ट वीएम तक पहुंच सकता है - क्या यह पासवर्ड इनपुट में दर्ज होने पर पासवर्ड को केवल कुंजी लॉग या पढ़ सकता है? – davnicwil

+2

इसे 'विंडो' पर सेट करने से क्लाइंट के ब्राउज़र द्वारा लागू किए जाने पर किसी भी अंतर्निहित सुरक्षा (उदा। मूल के लिए) को बाधित कर दिया जाएगा। इसके अलावा, अगर आप अपने घर की खिड़की खोलते हैं तो आपको लूट लिया जा सकता है, लेकिन इसका मतलब यह नहीं है कि आपको अपना दरवाजा भी खोलना चाहिए। –

उत्तर

1

एक चर में पासवर्ड छोड़ने के बारे में एक बुनियादी सवाल का अधिक है इसे अपने ब्राउज़र उपकरणों में आसानी से पहुंचने के लिए लोगों के लिए खुला छोड़ देता है! कहें कि फ़ंक्शन पासवर्ड बटन दबाए जाने पर फ़ंक्शन कहलाता है, पासवर्ड को एक चर नामक पासवर्ड में संग्रहीत करता है। यहां तक ​​कि यदि इस चर का उपयोग पृष्ठ पर इसके बाद भी नहीं किया जाता है, तो बस कोड में कहीं भी संभाला जाता है, सभी को अपने ब्राउज़र में डेवलपर टूल खोलना है, alert(password); जैसे बयान में जोड़ें, और बाम, पासवर्ड सचमुच उनके सामने खुलता है।

मान्य है, किसी भी कोड को इतना आसान करने के लिए पर्याप्त है कि वह वेब पर होने के योग्य है, और यहां तक ​​कि मध्यस्थ होने के योग्य भी है, लेकिन मुझे लगता है कि यह वास्तव में कितना कमजोर है, यह सबक है।

+0

सच है, लेकिन यह वास्तव में नेटवर्क पर दूरस्थ हमलों के बारे में एक सवाल है। मैं मान रहा था कि उपयोगकर्ता + मशीन सत्र के लिए शारीरिक रूप से सुरक्षित है! – davnicwil

+1

इसके बारे में सोचने के अलावा यह एक हमलावर को पासवर्ड या सत्र कुकीज़ संग्रहीत करने के बजाय थोड़ा अधिक अवसर प्रदान करता है - इसलिए सामान्य से कुछ भी वास्तव में बाहर नहीं है। उपयोगकर्ता अपने ब्राउज़र को शारीरिक रूप से सुरक्षित रखने वाले वेब ऐप डेवलपर के नियंत्रण से बाहर है। – davnicwil

संबंधित मुद्दे