10

मेरे द्वारा विकसित एप्लिकेशन यह निर्देश देता है कि सॉफ़्टवेयर को अनधिकृत पहुंच को रोकना चाहिए। इसे लागू करने के लिए, मैंने उपयोगकर्ता और पासवर्ड आधारित प्रमाणीकरण का उपयोग दो भूमिकाओं के साथ किया है - मानक उपयोगकर्ता और व्यवस्थापक।उपयोगकर्ताओं को एक पायथन PyQt डेस्कटॉप एप्लिकेशन में सुरक्षित रूप से प्रमाणीकरण और अधिकृत करना

यह उपयोगकर्ता इंटरफ़ेस के लिए डेटाबेस, पीईक्यूटी के साथ इंटरैक्ट करने के लिए एसक्यूएलकेमी का उपयोग करके पायथन में पूरी तरह लागू किया गया था।

दर्ज पासवर्ड ब्रिसप्ट का उपयोग करके धोया गया है और उसके बाद संबंधित उपयोगकर्ता नाम (वेब ​​सेवाओं में उपयोग की जाने वाली मानक प्रमाणीकरण तकनीक) के लिए डेटाबेस पर मौजूद हैश की तुलना में है।

सफल प्रमाणीकरण के बाद, self.authenticatedUser नामक एक चर को वर्ग User वर्ग का एक SQLAlchemy उदाहरण है।

इस कार्यान्वयन का परिणाम यह है किसी को भी प्रवेश विधि संपादित कर सकते हैं बस उपयोगकर्ता नाम व्यवस्थापक के साथ प्रकार User के ऑब्जेक्ट के लिए सीधे डेटाबेस क्वेरी और self.authenticatedUser को User की लौटे SQLAlchemy उदाहरण आवंटित और इस तरह बिंगो हैकर की पहुंच है करने के लिए है प्रणाली।

चूंकि, मैं अजगर में लिखे इस सॉफ़्टवेयर को वितरित कर रहा हूं, यह प्रमाणीकरण तंत्र को अक्षम करने के लिए हैकर (या किसी भी प्रकार के प्रोग्रामर) के लिए मिनटों का मामला है। इसके अलावा, मैं लॉगिन लॉगिन टोकन प्राप्त करके प्रमाणित या अधिकृत करने के लिए यहां एक वेब सेवा का उपयोग नहीं कर सकता क्योंकि सॉफ़्टवेयर का उपयोग पर्यावरण में air gap के साथ किया जाएगा।

क्या इसे सुरक्षित तरीके से कार्यान्वित करने के कोई ठोस तरीके हैं?

  1. एक स्थानीय MySQLDatabase
  2. किसी सुरक्षित (अपेक्षाकृत उल्टा करने के लिए कठिन इंजीनियर शायद उचित होगा) का उपयोग करना तंत्र का उपयोग करना।
+0

आप इसे ओएस बाइनरी के रूप में [PyInstaller] (http://www.pyinstaller.org/) के साथ वितरित करने के बारे में सोच सकते हैं। SQLAlchemy और PyQt समर्थित संकुलों की सूची पर हैं। PyInstaller भी PyCrypto का समर्थन करता है। –

उत्तर

2

सब कुछ सिर्फ एक मामला है कि कोड को रिवर्स करने के लिए कितना मुश्किल है, इसलिए यहां कुछ "तकनीक" की आवश्यकता है।

    बाइट कोड के लिए आपके आवेदन precompile
  • (लेकिन वहाँ uncompyle6 की तरह इसे वापस डिकंपाइल करने के लिए उपकरण हैं)
  • अपने कोड के लिए कुछ अस्पष्टकर्ता उपयोग करते हैं, तो यह शायद ही पढ़ी जा सकती है (जैसे pyminifier)
  • आपके आवेदन को एनक्रिप्ट (उदाहरण के लिए pyconcrete)
  • उपयोगकर्ता के पासवर्ड का उपयोग फ्लाई पर स्वयं के महत्वपूर्ण भाग को एन्क्रिप्ट करने के लिए करें। पासवर्ड के साथ, हैकर अनएन्क्रिप्टेड एप्लिकेशन को फिर से बना सकता है, लेकिन इसके बिना, यह असंभव है।
0

यहां तक ​​कि एक हवाई अंतर के साथ भी एक सेवा संभव है। हालांकि यदि आप ऐसा नहीं करना चाहते हैं, तो आपको अपने डेटा की रक्षा करनी चाहिए जैसे कि आपने प्रत्येक उपयोगकर्ता को एक प्रोपर एसक्यूएल क्लाइंट (जैसे pgAdmin या SQL सर्वर प्रबंधन स्टूडियो) दिया है। मेरा सुझाव है कि आप डेटाबेस स्तर पर अपनी भूमिकाओं/उपयोगकर्ताओं को कॉन्फ़िगर करना प्रारंभ करें।

0

चूंकि bcrypt अब अपनाया नहीं गया है और आप आसानी से SHA2x का उपयोग कर सकते हैं। मुझे लगता है कि आपको सुरक्षा कारण के लिए SHA2x का उपयोग करने पर विचार करने की आवश्यकता है। दूसरा, आप या तो जेडब्ल्यूटी का उपयोग कर सकते हैं, क्योंकि यह पाइथन के साथ 100% काम करता है। इसके अलावा 2 कारकों प्रमाणीकरण पर गहराई से नजर डालें जो आपकी सुरक्षा जांच के लिए एक और प्लस होगा।

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