2010-10-16 13 views
8

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

life='gfhjfkjdfa some encryption kj' 
कुकी में

ग्राहक पर सहेजा

session['life'] = 'the great one' 

प्रदर्शित होगी। लेकिन यह कैसे मायने रखता है क्योंकि यह अभी भी एन्क्रिप्टेड है। मुझे यकीन है कि लोग यहां से कहीं ज्यादा बेहतर चीजों को जानते हैं, इसलिए किसी को अनुरोध करने के लिए अनुरोध करें :-)

उत्तर

14

यहां तक ​​कि अगर आपके डेटा एन्क्रिप्टेड है, उपयोगकर्ता अभी भी उनके कुकी एक पहले वाली स्थिति रोल सकता

(जब तक आप एक बार एन्कोडिंग आईडी आदि शुरू) जैसे कुकी का कहना है कि उपयोगकर्ता के पास 100 क्रेडिट हैं, उपयोगकर्ता 100 क्रेडिट खर्च करता है, उन्हें एक नई कुकी मिलती है कि उनके पास 0 क्रेडिट हैं। फिर वे अपनी पिछली कुकी (100 क्रेडिट के साथ) को पुनर्स्थापित कर सकते थे।

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

+0

धन्यवाद निक! लेकिन फिर से एन्क्रिप्शन इसका ख्याल नहीं रखता। उदाहरण के लिए सत्र [क्रेडिट ] = 100 क्रेडिट = 'agfkalh कुछ एन्क्रिप्शन agakh' जैसे कुछ के रूप में सहेजा जाएगा। और यदि कुकी को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली गुप्त कुंजी उपयोगकर्ता के लिए अज्ञात है और यह काफी कठिन है, तो वह कोई परिवर्तन कैसे कर पाएगा। मेरा मतलब है वह निश्चित रूप से कुंजी को हटाने और कुछ फर्जी डेटा डालने में जा सकता है, लेकिन जब तक वह कुकी को डिक्रिप्ट करने में असमर्थ है, तब तक कोई समस्या कैसे बनाई जा सकती है। – Rasmus

+6

यदि 100 क्रेडिट क्रेडिट = "एबीसी" के रूप में एन्क्रिप्ट किया गया है, तो उपयोगकर्ता इसे देख सकता है, और जानता है कि "एबीसी" को 100 तक डिक्रिप्ट कर दिया जाएगा। उन्हें स्वयं को डिक्रिप्ट करने में सक्षम होने की आवश्यकता नहीं है। इसलिए वे सभी क्रेडिट खर्च कर सकते हैं, फिर क्रेडिट को "एबीसी" पर सेट कर सकते हैं। इसे रोकने के तरीके हैं , लेकिन जब आप सर्वर पर डेटा स्टोर कर सकते हैं तो यह वास्तव में परेशानी का लायक नहीं है। – Nick

+0

धन्यवाद! .. वह कुछ था जो मैं वास्तव में देख रहा था, बस मेरे दिमाग को पार नहीं किया .. – Rasmus

7

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

+0

+1 एक अच्छा, संक्षिप्त सारांश के लिए +1। –

+0

धन्यवाद नेड! लेकिन अधिकांश मामलों में यह नहीं होगा कि डेटा थोक नगण्य हो। – Rasmus

+2

लेकिन हाँ, +1 जैसा कि मुझे लगता है कि यह एक वैध कारण है जो मुझे लगता है कि मैं अपने ऐप पर सुरक्षित रूप से अनदेखा कर सकता हूं :-)। हालांकि अभी भी इसके कुछ और जवाबों की प्रतीक्षा है! – Rasmus

6

अंक पहले से ही ऊपर

  1. उपयोगकर्ता का उल्लेख करने के अलावा अपने ब्राउज़र सेटिंग्स का उपयोग कर कुकीज़ को निष्क्रिय कर सकते हैं। एंटीवायरस स्कैनर बहुत सारे स्कैन और स्कैग को जोखिम के रूप में ध्वजांकित करते हैं, जिसके कारण उपयोगकर्ता कंप्यूटर पर कुकीज की अनुमति नहीं दी जा सकती है।

  2. कुकीज़ को अपने सत्र के मध्य में भी उपयोगकर्ता द्वारा हटाया जा सकता है। (असल में, मैंने अनजाने में ऐसा किया कि दूसरे दिन जब एक मेरे पीसी स्कैनिंग ट्रैकिंग कुकीज़ सूचीबद्ध करता है ... और मैंने बस "साफ" पर क्लिक किया और वे सब चले गए)। यदि उपयोगकर्ता कुकीज़ को हटाने के लिए होता है, तो उपयोगकर्ता स्थिति खो जाएगी।

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

+0

उत्तर देने के लिए धन्यवाद इनसेन, लेकिन वह वास्तव में मैं नहीं जानना चाहता था :-)। मैं क्या जानना चाहता था कि सर्वर पर किसी भी सत्र से संबंधित डेटा को स्टोर क्यों किया जाए। मेरा मतलब है कि यदि आप सर्वर पर सत्र चर संग्रहीत करते हैं, तो आपको क्लाइंट पर सत्र आईडी को कुकी में स्टोर करना होगा। कुकीज को हटाकर, आपने जो कहा है उसका जवाब देने के लिए, उपयोगकर्ता वास्तव में खुद को अधिक नुकसान पहुंचाता है क्योंकि वह हार जाता है सत्र। यदि वह साइट पर लॉग इन है, तो वह वास्तव में लॉग आउट हो सकता है, या वह कुछ डेटा भी खो सकता है। जहां तक ​​कुकीज़ अक्षम करने का सवाल है, मुझे लगता है कि फॉलबैक पर काम करना है। धन्यवाद – Rasmus

+1

@ एलिस - वास्तव में वह बिंदु था जिसे मैं बनाने की कोशिश कर रहा था। असल में, आपको सर्वर पर सत्र से संबंधित डेटा स्टोर करने की आवश्यकता है क्योंकि क्लाइंट पर इसे संग्रहीत करना उपर्युक्त उदाहरणों के कारण विश्वसनीय नहीं है। जब कुकी अक्षम होती है, तो सत्रिका आमतौर पर एक क्वेरीस्ट्रिंग में केवल एक मान के रूप में पारित होती है। सत्रों को कुकीज़ पर स्वतंत्र बनाया जा सकता है - यहां तक ​​कि सत्र आईडी – InSane

+0

"सत्र सत्र आमतौर पर एक क्वेरीस्ट्रिंग में केवल एक मान के रूप में पारित किया जाता है" -हाँ जो अच्छा लगता है। 1. ऊपर ... धन्यवाद – Rasmus

1

सिक्योरकुकी कार्यान्वयन फ्लास्क मानों को एन्क्रिप्ट नहीं करता है। एकमात्र चीज सुनिश्चित की जा रही है कि उपयोगकर्ता एप्लिकेशन द्वारा उपयोग किए गए रहस्य को जानने के बिना कुकी को संशोधित नहीं कर सकता है।

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