सत्र का "गुप्त" विकल्प क्या है?


111

मैं क्रिप्टोग्राफी के बारे में कुछ नहीं जानता। मैं सोच रहा हूं कि सत्र रहस्य क्या है।

मुझे इस तरह कोड दिखाई देता है:

app.use(express.session({
  store: mongoStore({
    url: app.set('db-uri')
  }),
  secret: 'topsecret'
}));

क्या रहस्य है और क्या मुझे इसे बदलना चाहिए?

जवाबों:


83

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


43
न केवल आप इसे बदल सकते हैं, बल्कि आपको इसे बदलना चाहिए।
माइकल मिऑर

1
@MichaelMior, कितनी बार?
FRD

9
@ आरएफडी मेरा कहना था कि आपको किसी चीज़ का डिफ़ॉल्ट नहीं रखना चाहिए topsecret। गुप्त वर्णों का एक यादृच्छिक स्ट्रिंग होना चाहिए। आदर्श रूप से आप इसे समय-समय पर बदलते रहेंगे, जब यह पता चला होगा। हालाँकि, इसके लिए गुप्त रोटेशन के लिए समर्थन की आवश्यकता होती है ताकि आप मौजूदा सत्रों को तुरंत अमान्य न करें। यही है, दो सत्र रहस्यों को एक साथ वैध माना जाना चाहिए। मेरी जानकारी के अनुसार, इस समय एक्सप्रेस में रहस्यों को घुमाने के लिए समर्थन नहीं है।
माइकल मिओर जूल

7
@MichaelMior एक्सप्रेस-सत्र 1.11.0 गुप्त रोटेशन का समर्थन करता है। डॉक्स से: "यदि रहस्यों की एक सरणी प्रदान की जाती है, तो सत्र आईडी कुकी पर हस्ताक्षर करने के लिए केवल पहले तत्व का उपयोग किया जाएगा, जबकि अनुरोधों में हस्ताक्षर को सत्यापित करते समय सभी तत्वों पर विचार किया जाएगा।" ( विवरण के लिए एक्सप्रेस / सत्र # 127 देखें।)
वुल्फगैंग

क्या यह हस्ताक्षरित कुकी के समान है, यदि हाँ .. क्या आपको यह करने की आवश्यकता है:res.cookie('name', 'value', {signed: true})
मुहम्मद उमेर

22

एचएमएसी के साथ सत्र का उपयोग करने के लिए रहस्य का उपयोग किया जाता है:

https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L256

तब सत्र को गुप्त के साथ हैश के खिलाफ फिंगरप्रिंट की जाँच करके सत्र अपहरण से बचाया जाता है:

https://github.com/senchalabs/connect/blob/master/lib/middleware/session.js#L281-L287


3
हालांकि हैश सत्र अपहरण से कैसे बचाता है? यदि हमलावर के पास सत्र कुकी है, तो क्या उनके पास हैश भी नहीं है? यदि हमलावर के पास कुकी नहीं है, तो गुप्त हैश कैसे अनुमान लगाता है (बनाम अब केवल यादृच्छिक आईडी आईडी होने से) मुश्किल है?
स्टुअर्ट पी। बेंटले

8
गुप्त हैश के लिए एक नमक है, यह सिर्फ किसी के लिए कठिन बना देता है: 1. एक फ़िश कुकी को डिक्रिप्ट करना, 2. एक उपयोगकर्ता को प्रतिरूपित करके एक सत्र को खराब करना, क्योंकि उनके पास रहस्य (नमक) नहीं है जो वे नहीं कर सकते हैं एक उचित सत्र आईडी का उत्पादन।
mattdlockyer

7
यह लिंक 3 साल पुराने होने के कारण दोनों लिंक अमान्य हैं।
14

5
@mattdlockyer यह सत्र अपहरण से आपकी रक्षा नहीं करता है। और एक हमलावर कुकी को डिक्रिप्ट करने की कोशिश क्यों करेगा? यदि हमलावर के पास कुकी है तो सत्र समाप्त होने तक उसकी पूरी पहुँच है। मेरा मतलब है कि ऐसा नहीं है कि लोग कुकी में अपने उपयोगकर्ता का पासवर्ड स्टोर करते हैं, यह हास्यास्पद होगा। और jwt जैसी चीजों से लगभग हमेशा बचना चाहिए।
फॉरविन

सत्र के रहस्य के उद्देश्य के बारे में मिश्रित उत्तर प्रतीत होते हैं। कुछ का कहना है कि यह सत्र अपहरण से बचाता है जबकि अन्य असहमत हैं। क्या कोई समझा सकता है कि इस हैश को उत्पन्न करने का वास्तविक उद्देश्य क्या है? ठीक है, यह क्या है कि यह एक हैश के लिए कंप्यूटिंग है?
nawK

-9

गुप्त कुंजी मूल रूप से सत्र में डेटा एन्क्रिप्ट करने के लिए उपयोग की जाती है


8
नहीं, यह नहीं है। 6 साल पहले के स्वीकृत उत्तर देखें।
क्वेंटिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.