2012-11-20 18 views
5

के लिए हल्के वेब प्रमाणीकरण मैं थोड़ा गूढ़ परियोजना पर काम कर रहा हूं जहां हमें एक छोटे/धीमी एम्बेडेड माइक्रो (कोई ओएस) में कुछ बुनियादी प्रमाणीकरण को लागू करने की आवश्यकता नहीं है। डिवाइस अपने सीरियल पोर्ट के माध्यम से कुछ वेब पेजों परोसता है जो तब आईपी नेटवर्क पर थोड़ा हार्डवेयर द्वारा स्क्वायर हो जाते हैं, जिन पर हमारा कोई नियंत्रण नहीं होता है।एम्बेडेड सिस्टम

सर्वर कोड, जैसे कि यह है (लगता है कि nweb भुखमरी आहार पर), HTTP GET/POST अनुरोधों में लेता है और पृष्ठों को & के अनुसार अपनी सेटिंग्स बदलता है।

हमें उपयोगकर्ता लॉगिन/सत्र प्रमाणीकृत करने का कोई तरीका चाहिए ताकि हम लोगों को डेटा देखने या उन सेटिंग्स को बदलने की अनुमति न दें जिन्हें उन्हें नहीं करना चाहिए।

डिवाइस का उद्देश्य सीधे इंटरनेट से संपर्क नहीं करना है या गंभीर हैकिंग (नेटवर्क सुरक्षा/अलगाव ग्राहक की समस्या *) के लिए 100% अपरिवर्तनीय होना है, इसलिए सुरक्षा की आवश्यकता निचले रैंक को ब्लिंकेंलाइट्स को छूने से रोकने के बारे में अधिक है ;)

अंतरिक्ष/प्रसंस्करण शक्ति की कमी के कारण (मान लें कि हमारे पास कोड स्थान की ~ 2k है और कई मेगाहर्ट्ज नहीं है) हम एसएसएल जैसी चीजों को लागू नहीं कर सकते हैं, लेकिन कम से कम एक बेहतर जाना अच्छा होगा बोग मानक HTTP access control

हम जीईटी, पोस्ट और कुकी डेटा सेट/सेट कर सकते हैं। हमारे माइक्रो में एक चीज एक सभ्य क्रिप्टो-मानक हार्डवेयर यादृच्छिक संख्या जेनरेटर है, क्या यह किसी भी मदद की होनी चाहिए।

  • = वास्तव में ग्राहकों को अपने नेटवर्क पर डिवाइस को लटकाना चाहिए, शारीरिक रूप से डिस्कनेक्ट किया जाना चाहिए या कम से कम किसी अन्य चीज़ से फायरवॉल किया जाना चाहिए। लेकिन हे, अगर यह बोइंग के लिए काम करता है ...

उत्तर

1

आप केवल उपयोग के खिलाफ की रक्षा करना चाहते हैं: किसी भी समय GET अनुरोध है, पासवर्ड की एक कुकी के लिए लग रही है। यदि कुकी सेट नहीं है, तो एक HTML लॉगिन फ़ॉर्म वापस भेजें जो सर्वर पर पासवर्ड पोस्ट करता है। यदि सर्वर को सही पासवर्ड के साथ POST डेटा मिलता है तो उसे "लॉग इन ठीक" पृष्ठ भेजें जो कुकी को पासवर्ड पर सेट करता है। फिर जो कोई भी लॉगिन करता है (स्पष्ट रूप से सही पासवर्ड के साथ) में सभी भविष्य में कुकी सेट की आवश्यकता होगी। कोई भी जिसने कभी लॉग इन नहीं किया है वह हमेशा लॉगिन पेज देखेगा। आप दो कुकी मानों को सेट करके इसे 'छुपा सकते हैं: एक यादृच्छिक संख्या, और यादृच्छिक और पासवर्ड का एक्सओआर। इस प्रकार ग्राहक यह समझने में सक्षम नहीं होंगे कि कुकीज़ में मूल्य क्या हैं। यदि आप क्लाइंट आईपी के साथ फ्यूचर और एक्सओआर जाते हैं, तो क्लाइंट अन्य कंप्यूटरों पर कुकीज़ कॉपी करने में सक्षम नहीं होंगे। सर्वर हमेशा सबकुछ अनदेखा करने और यादृच्छिक संख्या और अन्य कुकी मानों से पासवर्ड/आईपी को समझने में सक्षम होगा।

यदि आप सरल एन्क्रिप्शन चाहते हैं तो आप जावास्क्रिप्ट में XMLHTTPREQUESTS का उपयोग कर सकते हैं। सर्वर को एक साधारण puesdo यादृच्छिक संख्या जनरेटर (या बस एक एक्सओआर obsfuncitation या जो कुछ भी) के साथ डेटा एन्क्रिप्ट करें और क्लाइंट जावास्क्रिप्ट में पीछे की ओर एक ही काम करते हैं। आप index.html को छोड़कर सर्वर को हर पृष्ठ एन्क्रिप्ट कर सकते हैं, और index.html में आप इसे प्राप्त कर सकते हैं ताकि यह XMLHTTPREQUESTS अन्य पृष्ठों को जावास्क्रिप्ट में ले जाये और उन्हें डिक्रिप्ट कर सके, फिर सामग्री को आंतरिक HTML या जो कुछ भी उपयोग करके div में रखता है।

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