2011-08-18 12 views
6

मैं WinForm एप्लिकेशन में अपने कनेक्शन स्ट्रिंग को कैसे सुरक्षित कर सकता हूं?WinForm अनुप्रयोगों में सुरक्षित कनेक्शनस्ट्रिंग

+0

इसका उपयोग सी # कोड एन्कप छेद अनुभाग [लिंक] (http://stackoverflow.com/questions/37573551/encrypt-app-config-custom-element-using-cmd?answertab=active#tab का उपयोग करके पूर्ण रूप से किया जा सकता है -top) –

उत्तर

18

आप नहीं कर सकते। यद्यपि आप app.config फ़ाइल में कनेक्शन स्ट्रिंग को एन्क्रिप्ट कर सकते हैं, एप्लिकेशन को इसे डिक्रिप्ट करने में सक्षम होना आवश्यक है और इसलिए अनएन्क्रिप्टेड कनेक्शन स्ट्रिंग को पुनर्प्राप्त करना हमेशा संभव है, खासकर एक प्रबंधित एप्लिकेशन के साथ (शायद आपके सामान्य अंतिम उपयोगकर्ता के लिए नहीं, लेकिन कोई भी कुशल डेवलपर ऐसा कर सकता है)।

इसका समाधान security by obscurity पर दुबला नहीं होना है। Windows उपयोगकर्ता खाते का उपयोग कर डेटाबेस से कनेक्ट करते समय विंडोज इंटीग्रेटेड सिक्योरिटी का उपयोग करें और उपयोगकर्ता को डेटाबेस में न्यूनतम अधिकारों का अधिकार दें।

अक्सर हालांकि यह अभी भी पर्याप्त नहीं है, क्योंकि अंतिम उपयोगकर्ता डेटाबेस से सीधे कनेक्ट होने पर डेटाबेस को सुरक्षित करना बहुत कठिन होता है (अक्सर क्योंकि आपको पंक्ति स्तर की सुरक्षा की आवश्यकता होती है)। इसके लिए काम करने के लिए आपको टेबल और विचारों तक पहुंच से इनकार करने की आवश्यकता है और पूरी तरह से संग्रहित प्रक्रियाओं में वापस आना चाहिए।

डेस्कटॉप अनुप्रयोग को सीधे डेटाबेस से संचार करने से रोकने के लिए एक बेहतर तरीका है; मध्यवर्ती परत के रूप में एक वेब सेवा का उपयोग करें। उस स्थिति में आपके पास सुरक्षा पर पूर्ण नियंत्रण है और आप (वेब) सर्वर पर कनेक्शन स्ट्रिंग को सुरक्षित रूप से स्टोर कर सकते हैं।

+3

+1। प्रबंधित ऐप्स के साथ विशेष रूप से कोई पूर्ण सुरक्षा नहीं है। आप कुछ चीजों के साथ सुरक्षा को लागू कर सकते हैं जैसे एक webservice परत और डेटाबेस से उपयोगकर्ताओं को अलग करना, लेकिन फिर भी यह सही नहीं होगा। आपको ऐप की अवधारणा से इसे ध्यान में रखना होगा। –

+0

@ स्टीवन "विंडोज इंटीग्रेटेड सिक्योरिटी" का लिंक टूटा हुआ है। :) –

0

यह यहाँ एक बहुत पूछा जाता है ...

Encrypting sections and-or settings in an App.config file that will be redistributed

वहाँ उस पर एक परिमित जवाब हो रहा है कभी नहीं ... यह यह करने के लिए उन "प्रत्येक में से एक है लगता है अपने स्वयं के "प्रकार परिदृश्य ... अपनी स्थिति के अनुसार सबसे अच्छा क्या उपयोग करें।

+0

उत्तर बहुत सीमित हैं, उत्तर के रूप में आपकी खतरनाक टिप्पणी भ्रामक है। – MickLH

+0

एह ने कुछ भी पसंद किया है जो हैकिंग द्वारा डिक्रिप्शन को रोकने के लिए नियमित रूप से "निजी कुंजी" को बदलने के लिए मालिक के काम को एन्क्रिप्ट किया गया है। मौसम आप पूरी कॉन्फ़िगरेशन को एन्क्रिप्ट करते हैं या इसका एक हिस्सा यह है कि "पसंद करने के लिए" बहुत अधिक है, इसलिए परिमित नहीं है, लेकिन हो सकता है कि परिमित शब्द का सही विकल्प "विशिष्ट सही" बेहतर न हो। – War

+0

आपने बिंदु को याद किया है, बिंदु यह है कि कॉन्फ़िगर एन्क्रिप्ट करना एक गलत विचार है, आपको संवेदनशील डेटा को एक सुरक्षित इंटरफ़ेस प्रदान करने की आवश्यकता है क्योंकि किसी एप्लिकेशन को इसे चलाने के लिए रनटाइम पर _always_ को कॉन्फ़िगर करना होगा। – MickLH

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