के साथ एक एन्क्रिप्टेड कुकी संग्रहीत करना मुझे रेल में एक कुकी में डेटा का एक छोटा टुकड़ा (10 अक्षर से कम) स्टोर करने की आवश्यकता है और मुझे इसे सुरक्षित होने की आवश्यकता है। मैं नहीं चाहता कि कोई भी डेटा के उस टुकड़े को पढ़ने या डेटा के अपने हिस्से को इंजेक्ट करने में सक्षम हो (क्योंकि यह कई प्रकार के हमलों के लिए ऐप खोल देगा)। मुझे लगता है कि कुकी की सामग्री को एन्क्रिप्ट करना रास्ता है (क्या मुझे यह भी साइन करना चाहिए?)। यह करने के लिए सबसे अच्छा तरीका क्या है?रेल
अभी मैं यह कर रहा हूं, जो सुरक्षित दिखता है, लेकिन कई चीजें उन लोगों के लिए सुरक्षित दिखती हैं जो सुरक्षा के बारे में मुझसे ज्यादा जानते थे और फिर यह पता चला कि यह वास्तव में सुरक्षित नहीं था।
मैं इस तरह से गुप्त बचत कर रहा हूँ:
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
cookies[:secret] = {
:value => encryptor.encrypt(secret),
:domain => "example.com",
:secure => !(Rails.env.test? || Rails.env.development?)
}
और फिर मैं इसे इस तरह पढ़ रहा हूँ:
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
secret = encryptor.decrypt(cookies[:secret])
कि सुरक्षित है? ऐसा करने के किसी भी बेहतर तरीके?
अद्यतन: मैं और रेल 'सत्र के बारे में पता है कि यह कैसे सुरक्षित है दोनों कुकी पर हस्ताक्षर करके और वैकल्पिक रूप से सत्र सर्वर साइड की सामग्री भंडारण और मैं क्या इसके लिए है के लिए सत्र का उपयोग करते हैं द्वारा। लेकिन मेरा प्रश्न यहां कुकी को संग्रहित करने के बारे में है, जो सूचना में मुझे पसंद नहीं है, लेकिन मुझे अभी भी सुरक्षित होने की आवश्यकता है।
ब्याज से, इसे सर्वर-पक्ष की बजाय कुकी में संग्रहीत करने की आवश्यकता क्यों है, जहां यह परिभाषा अधिक सुरक्षित होगी? – Russell
@russell अच्छी तरह से, आपको ब्राउज़र में कुछ स्टोर करने की ज़रूरत है, है ना? अन्यथा आप इसे फिर से पहचानने में सक्षम नहीं होंगे। चाहे वह वास्तविक डेटा या किसी तालिका पर रिकॉर्ड की आईडी हो, यह डेटा और अन्य विचारों के आकार के बारे में वरीयता और आवश्यकता का विषय है। जो मैं भंडारित कर रहा हूं वह पहले से ही तालिका में एक रिकॉर्ड की आईडी है। मैं एक और टेबल बना सकता था, लेकिन यह इस मामले में अपशिष्ट की तरह लगता है। – Pablo
मैंने एक जवाब जोड़ा है क्योंकि मुझे लगता है कि डीबी का उपयोग करने के लिए डिफ़ॉल्ट सत्र स्टोर को बदलना आपको टेबल बनाने के संबंध में बहुत कम ओवरहेड के साथ सुरक्षा प्रदान करेगा। – Russell