2012-11-21 7 views
7

पृष्ठभूमि का एक छोटा सा -क्या MySQL * अस्थायी रूप से * में सादे टेक्स्ट पासवर्ड स्टोर करना सुरक्षित है?

मैं जावा में चलने वाला एक गेम सर्वर चलाता हूं, और एक मंच जो PHP (phpbb) में चलता है। मेरे पास गेम और फोरम खाते जुड़े हैं, जैसे कि गेम में पासवर्ड बदलना स्वचालित रूप से फोरम खाते के लिए पासवर्ड बदल देता है। दोनों सिस्टम अलग-अलग पासवर्ड हैशिंग एल्गोरिदम का उपयोग करते हैं, और मुझे phpbb के अंतर्निर्मित फ़ंक्शंस का उपयोग कर फोरम साइड पर पासवर्ड हैश अपडेट करना होगा, जिसका अर्थ है कि मुझे उन्हें एक PHP स्क्रिप्ट से कॉल करना होगा (अपना कोड चलाने के बजाए)।

ऐसा करने के लिए, मैंने पासवर्ड स्क्रिप्ट को बदलने के लिए जावा स्क्रिप्ट को HTTP स्क्रिप्ट बनाकर PHP स्क्रिप्ट को कॉल करने का निर्णय लिया है, ताकि PHP स्क्रिप्ट को ट्रिगर करने के लिए पासवर्ड बदलने वाली प्रक्रिया को पूरा किया जा सके। मंच खाता हालांकि, मैं सादे टेक्स्ट पासवर्ड को किसी भी HTTP कॉल में नहीं रखना चाहता, क्योंकि यह लॉग फ़ाइलों और शायद अन्य शोषक क्षेत्रों में दिखाई दे सकता है। मेरा वर्तमान विचार यह है कि जब जावा पक्ष पासवर्ड बदल रहा है, तो यह नया सादा टेक्स्ट पासवर्ड डेटाबेस तालिका में रखता है, और उसके बाद PHP स्क्रिप्ट को ट्रिगर करने के लिए HTTP अनुरोध करता है, जैसे HTTP अनुरोध में कोई हैश या संवेदनशील जानकारी नहीं जाती है। HTTP कॉल केवल खाते के उपयोगकर्ता नाम को बदलने के लिए, और प्रमाणीकरण के लिए साझा किए गए गुप्त प्लस उपयोगकर्ता नाम का md5 हैश पास करेगा। जब PHP स्क्रिप्ट चलता है, तो यह उपयोगकर्ता के डेटाबेस से नए सादे टेक्स्ट पासवर्ड को पुनर्प्राप्त करता है, तुरंत इसे हटा देता है, फिर phpbb के हैशिंग एल्गोरिदम के माध्यम से सादे टेक्स्ट पासवर्ड चलाता है और फ़ोरम डेटाबेस अपडेट करता है।

सामान्य स्थितियों के तहत, सादे टेक्स्ट पासवर्ड शायद हटाए जाने से पहले एक सेकंड से भी कम समय तक डेटाबेस में होगा। आदर्श रूप से, मैं इसे कहीं भी संग्रहीत नहीं करूँगा, लेकिन मुझे यकीन नहीं है कि जावा से PHP में आवश्यक परिवर्तन को कैसे संवाद करना है जब मैं भविष्यवाणी नहीं कर सकता कि फोरम का पासवर्ड हैश क्या होगा, इसलिए मुझे किसी भी तरह से भेजने की ज़रूरत है हैशिंग करता है जो PHP स्क्रिप्ट के लिए plaintext पासवर्ड।

ऐसा करने के बेहतर तरीके पर कोई विचार, या सादे टेक्स्ट पासवर्ड को बहुत कम समय के लिए संग्रहीत करने पर कोई प्रतिक्रिया है? मैं MySQL लॉगिन को सुरक्षित मानता हूं और अन्य लोगों या परियोजनाओं के साथ साझा नहीं किया जाता है।

धन्यवाद!

+3

क्या आप डीबी में इसे स्टोर करने से पहले इसे जावा से एन्क्रिप्ट कर सकते हैं और डीबी से इसे पढ़ने के बाद इसे PHP से डिक्रिप्ट कर सकते हैं? – 0xFE

+2

एन्क्रिप्शन एक सभ्य विचार है, क्योंकि स्पष्ट रूप से आपके पास पहले से ही एक साझा रहस्य है। एचटीटीपीएस और POST के माध्यम से PHP डेटा को केवल उपयोगकर्ता नाम और सादे टेक्स्ट पासवर्ड भेजने के बारे में क्या है? – slashingweapon

+4

बेहतर अभी तक, PHP बीबी https://wiki.phpbb.com/Authentication_plugins के लिए कस्टम प्रमाणीकरण प्लगइन बनाएं, यह कस्टम पासवर्ड प्रमाणीकरण योजनाओं का समर्थन करता है, और यदि लागू हो तो आपको एकल साइन-ऑन का लाभ उठाने की अनुमति देनी चाहिए। –

उत्तर

0

एन्क्रिप्शन रास्ता है।

  • एन्क्रिप्टेड कनेक्शन: HTTPS के लिए समानार्थी। यदि आपका सर्वर इसका समर्थन करता है, तो HTTPS का उपयोग करके phpbb पर डेटा पास करें।
  • एन्क्रिप्टेड डेटा: या तो पासवर्ड एन्क्रिप्ट करें और किसी भी तरह कुंजी (बहुत असुरक्षित) स्टोर करें, या असममित एन्क्रिप्शन का उपयोग करें। एक सुरक्षित चैनल पर पासवर्ड भेजने के बारे में अच्छी जानकारी के लिए my question का उत्तर देखें।
+0

मेरे विशेष मामले के लिए, यह विधि सर्वोत्तम काम करती है, क्योंकि इसे कम से कम काम की आवश्यकता होती है। मैं अपनी मौजूदा PHP स्क्रिप्ट ले रहा हूं और इसे HTTPS पर उपयोग कर रहा हूं और उन पासवर्ड को पास कर रहा हूं जिन्हें एन्क्रिप्टेड कनेक्शन पर धोया जाना आवश्यक है। – DivideByHero

0

यह उस डेटाबेस पर निर्भर करता है जिसका उपयोग आप जावा से अधिक जावा के साथ कर रहे हैं। PHP में विभिन्न डेटाबेस से कनेक्ट करने और डेटा में हेरफेर करने के लिए पीडीओ का उपयोग करें। रिवर्स एन्क्रिप्शन दिमाग के आधार पर आप केवल एक डीबी को प्राथमिक पासवर्ड भंडारण के रूप में और दूसरे को साल्वे के रूप में रखने का प्रयास कर सकते हैं।

PHP (उदाहरण के लिए) पीडीओ को सीधे पासवर्ड के पासवर्ड में जावा डीबी में टेक्स्ट पासवर्ड - निश्चित रूप से उपयोगकर्ता के लिए विशिष्ट - और फिर उस कॉलम को पढ़ने के लिए जावा फ़ंक्शन को ट्रिगर करने के लिए PHP बताएं, हैश, अपडेट करें सही कॉलम और अस्थायी क्षेत्र को हटा दें।

यदि सही तरीके से किया जाता है, तो आप कुछ मिलीसेकंड तक सीमित भेद्यता का समय-सीमा प्राप्त कर सकते हैं।

3

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

पीएस - मैंने इस जवाब को गलती से दो बार पोस्ट किया, और "पोस्ट हटाएं" दबाकर - मुझे उम्मीद है कि स्टैकओयरफ्लो इसका ख्याल रखेगा।

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

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