2009-02-17 8 views
13

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

विचार करने के लिए चीजें:
क्या आप संपत्ति फ़ाइलों, एक्सएमएल कॉन्फ़िगरेशन, अन्य का उपयोग करते हैं?
क्या यह आपके आवेदन में बंडल किया गया है (यानी एक जार फ़ाइल में) या फाइल सिस्टम पर अलग से संग्रहीत किया गया है?
पासवर्ड एन्क्रिप्टेड है? यदि हां, तो आप किस एन्क्रिप्शन योजना का उपयोग करते हैं?

उत्तर

5

जावा के साथ, डेटाबेस कनेक्शन पूल कंटेनर द्वारा वेबपैप्स में पारित किए जाने चाहिए। यह संसाधनों के रूप में WEB-INF/web.xml में मानक घोषित करने योग्य है। मेल सत्रों और अन्य बाहरी संसाधनों पर भी लागू होता है जो स्थापना से स्थापना में भिन्न हो सकते हैं। इस पर अधिक जानकारी के लिए जेएनडीआई देखें)

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

टॉमकैट में यह या तो संदर्भ फ़ाइलों (जैसे) conf/Catalina/localhost /, conf/server.xml या - वेबपैस मेटा-आईएनएफ/context.xml से केवल देव वातावरण के लिए कॉन्फ़िगर किया गया है। अन्य वातावरण में अपना स्वयं का कॉन्फ़िगरेशन स्थान या एप्लिकेशन होता है।

पासवर्ड की एन्क्रिप्शन वास्तव में कंटेनर पर निर्भर करता है। टॉमकैट उन्हें सादे टेक्स्ट में स्टोर करता है, लेकिन एप्लिकेशन स्वयं इसे नहीं देख पाएगा। मैं अन्य वातावरण में यांत्रिकी के बारे में नहीं जानता।

3

ऐप सर्वर पर निर्भर करता है।

मैं आम तौर पर डेटा स्रोत के लिए जेएनडीआई लुकअप का उपयोग करता हूं, इसलिए कनेक्शन पूल को संभालने वाले ऐप सर्वर पर प्रमाण-पत्र संग्रहीत किए जाते हैं। इस तरह कॉन्फ़िगरेशन में जेएनडीआई नाम के अलावा कुछ और करने की जरूरत नहीं है।

हां, पासवर्ड वेबलॉगिक पर एन्क्रिप्ट किया गया है।

टॉमकैट पर चीजें पागल हो सकती हैं। कनेक्शन जानकारी मेटा-आईएनएफ/context.xml में है, जिसका अर्थ पासवर्ड के लिए सादा पाठ है। मैं केवल विकास के लिए ऐसा करता हूं, उत्पादन में कभी नहीं।

8

चूंकि आप मंच पर खुला प्रश्न छोड़ रहे हैं, इसलिए मैं .NET ऐप्स के लिए डेटाबेस प्रमाण-पत्र वेब.कॉन्फिग फ़ाइल में संग्रहीत कर दूंगा। संस्करण 2.0 और ऊपर से, एक विशिष्ट कनेक्शन स्ट्रिंग अनुभाग है जो कनेक्शन स्ट्रिंग में आसान प्रोग्रामेटिक पहुंच की अनुमति देता है।

आईआईएस स्वचालित रूप से वेब.कॉन्फिग फ़ाइल को सीधे अनुरोधों को सीधे अवरुद्ध करने के अलावा, आप web.config फ़ाइल के कनेक्शनस्ट्रिंग अनुभाग को एन्क्रिप्ट करने के लिए IIS कमांड का भी उपयोग कर सकते हैं। यह एन्क्रिप्शन मशीन विशिष्ट है, इसकी ताकत को जोड़ता है, और .NET रनटाइम फ्लाई पर कनेक्शन स्ट्रिंग को तब भी डिक्रिप्ट करेगा जब आप इसे एक्सेस करते हैं, इसलिए इसके साथ काम करने के लिए आपके एप्लिकेशन में अतिरिक्त कोडिंग की आवश्यकता नहीं है।

4

माइक्रोसॉफ्ट स्टैक पर, चीजें बहुत अच्छी हो सकती हैं।

आप लगभग किसी भी अनुमति के साथ सक्रिय निर्देशिका में एक नेटवर्क उपयोगकर्ता खाता बनाते हैं। आप आईआईएस को उस उपयोगकर्ता के रूप में अपना वेबपैप चलाने के लिए कॉन्फ़िगर करते हैं। आप उस उपयोगकर्ता को वेब फ़ोल्डरों और डिस्क पर फ़ाइलों तक पहुंच पढ़ने के लिए देते हैं। आप उस तालिका को उस उपयोगकर्ता को पढ़ने/लिखने की अनुमति देने के लिए SQL सर्वर कॉन्फ़िगर करते हैं जो आप चाहते हैं। और कनेक्शन स्ट्रिंग में, आप डीबी क्लाइंट को उस उपयोगकर्ता खाते के रूप में कनेक्ट करने का निर्देश देते हैं, जिसे वेबपैप वर्तमान में चलाया जा रहा है।

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

1

Django में, प्रमाण पत्र आपके settings.py कॉन्फ़िगरेशन फ़ाइल में हैं। चूंकि यह आमतौर पर आपके /var/www/ निर्देशिका पेड़ में नहीं रखा जाता है, यह बहुत सुरक्षित है।

इसके अलावा, एक ही मेजबान पर कई वेब साइटों या वेब सर्वरों के लिए एक एकल Django एप्लिकेशन का उपयोग किया जा सकता है (और पुन: उपयोग किया जा सकता है), प्रत्येक की अपनी अलग सेटिंग्स के साथ। तो settings.py कॉन्फ़िगरेशन ऐप के साथ बंडल नहीं किया गया है, लेकिन ऐप की एक ही तैनाती का हिस्सा है।

1

asp.net के लिए:

मैं web.config में रजिस्ट्री प्रविष्टि के लिए एक संदर्भ में इस तरह के कनेक्शन स्ट्रिंग के रूप में वैश्विक मानकों और रजिस्ट्री में भंडार रास्तों और उसके बाद की दुकान।

मुख्य कारण यह है कि मुझे अक्सर लगता है कि मुझे पृष्ठभूमि कार्यों और अन्य स्वचालित सुविधाओं को चलाने के लिए निष्पादन योग्य अकेले स्टैंड लिखना है, जिन्हें समान पैरामीटर तक पहुंच की आवश्यकता होती है। इसलिए एक आसानी से सुलभ जगह में वास्तव में वैश्विक है जो सब कुछ एक आसान जीवन के लिए बनाता है।

0

इनमें से कौन सा आपके वेब ऐप के डेटाबेस प्रमाण-पत्र रखने के लिए अच्छी जगह है? आपके स्रोत कोड में एक अलग फ़ाइल में आपके वेब सर्वर होस्ट पर एक अलग फ़ाइल में आपके डेटाबेस कोई भी नहीं। डेटाबेस प्रमाण-पत्रों को कभी भी संग्रहीत नहीं किया जाना चाहिए

+0

फिर क्रेडेंशियल्स के साथ सर्वर पर कोई फ़ाइल नहीं होने पर पृथ्वी पर आपका एप्लिकेशन डेटाबेस से कैसे कनेक्ट होता है? – thenetimp

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