2011-01-20 13 views
8

उस समय के दौरान मैंने सीखने से ब्रेक लेने में व्यतीत किया है कि PHP यूनिकोड का समर्थन कैसे करता है मैं अपनी "मुझे याद रखें" कुकीज़ को थोड़ा और सुरक्षित बनाने में डील कर रहा हूं। हालांकि कुछ ऐसी चीजें हैं जिन्हें मैं समझ नहीं पा रहा हूं और मेरी कुछ संगीतयों में मुझे कुछ सुझाव और राय चाहिए।PHP: मुझे याद रखें और सुरक्षा?

1) क्या "मुझे याद रखें" सुविधा को अपनाने के लिए कोई तरीका है जिसमें कुकीज़ शामिल नहीं है? उत्सुकता है क्योंकि प्रमाणीकरण कुकीज़ संग्रहीत करने में स्पष्ट सुरक्षा त्रुटियां हैं। ऐसा नहीं है कि सब कुछ के बारे में सुरक्षा जोखिम नहीं हैं।

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

3) प्रमाणीकरण कुकी को संग्रहीत करने के लिए पूर्णतम विधि क्या है ("बिल्कुल नहीं" से अलग)? मैंने वर्तमान में कुकी में एक टोकन सेट करने के लिए उस क्षेत्र को कोड किया है (समय(), उनके उपयोगकर्ता एजेंट, remote_addr, और नमक - sha256 का उपयोग करके धोया)। जब उपयोगकर्ता वापस आता है तो यह टोकन के लिए 'सत्र' तालिका की जांच करता है, फिर आईपी से आईपी से लॉग इन करने के लिए मेल खाता है। अगर टोकन वहां है लेकिन आईपी मेल नहीं खाता है तो चुपचाप कुकी को अनसेट करता है और उन्हें लॉग इन करने के लिए कहता है अगर उनके पास कोई नहीं था।

फिर से सभी को धन्यवाद।

+0

आप एक मौजूदा प्रमाणीकरण ढांचे को फिर से उपयोग करना चाहिए जब भी संभव हो, क्योंकि, वास्तव में, यह जटिल है। उदाहरण के लिए, https://github.com/delight-im/PHP-Auth पर एक नज़र डालें, आपको क्लाइंट साइड पर कुछ लगातार स्टोरेज की आवश्यकता होगी जो आप करने की कोशिश कर रहे हैं - और इस प्रकार कुकीज़ आदर्श विकल्प हैं। – caw

उत्तर

6
  1. अनिवार्य रूप से, नहीं। इसके लिए ग्राहक पक्ष पर कुछ प्रकार के भंडारण की आवश्यकता होती है; आपके पास यह जानने का कोई तरीका नहीं है कि क्लाइंट कुकी के बिना कौन है (या समान, HTML 5 क्लाइंट-साइड स्टोरेज की तरह)।

  2. यह एक व्यापार-बंद है जिसे आपको तय करना होगा। न्यूनतम, पुराने पासवर्ड या पुष्टिकरण के कुछ अन्य रूप (ई-मेल?) को इसे एक नए में बदलने की आवश्यकता होनी चाहिए।

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

+0

1) ऐसा नहीं सोचा था, लेकिन मैंने सोचा कि संभवतः संभावित कट्टरपंथी विचारों के लिए यह पूछने लायक हो सकता है। ;) 2) मुझे निश्चित रूप से ईमेल, उपयोगकर्ता नाम, पासवर्ड इत्यादि जैसी किसी भी जानकारी को अपडेट करने के लिए पुराने पासवर्ड की आवश्यकता होगी। मुख्य रूप से कुछ भी खरीदने जैसे चीजों के लिए मेरा मतलब था (यह एक गेमसाइट है ताकि उपयोगकर्ताओं के पास ऐसे विकल्प हों), व्यापार अन्य उपयोगकर्ता, उस तरह की चीज। 3) मैं वास्तव में एन्क्रिप्शन या कोई एन्क्रिप्शन के विपरीत भंडारण/जांच (जिस तरह से यह मेरे प्रारंभिक विलुप्त होने के अनुसार काम करता है) की प्रणाली का जिक्र कर रहा था। – Zydeco

+0

@Zyd Ah मैंने सोचा था कि आप कह रहे थे कि यदि आप आईपी, उपयोगकर्ता-एजेंट इत्यादि से मेल खाते हैं तो आप केवल एक निश्चित कुकी स्वीकार करते हैं। कुकी की एकमात्र आवश्यकता यह है कि यह पर्याप्त यादृच्छिक है इसलिए इसका आकलन नहीं किया जा सकता है। जिस विधि का आप उपयोग कर रहे हैं वह बहुत अच्छा नहीं है क्योंकि यह थोड़ा अनुमानित है - हालांकि नमक, यदि पर्याप्त बड़ा हो, तो इसे ऑफसेट कर सकता है। किसी भी मामले में, आपको इसे बदलना चाहिए। – Artefacto

+0

स्पष्ट होने के लिए: HTTPS का उपयोग करें और कुकीज पर 'सुरक्षित' ध्वज सेट करें, जो कुकी अपहरण के अधिकांश रूपों से बचाता है (जब तक उपयोगकर्ता की मशीन से समझौता नहीं किया जाता है)। – deceze

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