2009-06-25 21 views
5

मैं थोड़ा वेबगैम बना रहा हूं जिसमें कार्य और समाधान हैं, समाधान को कार्य पूरा करने के बाद उपयोगकर्ता को दिए गए कोड को दर्ज करके हल किया जाता है। कुछ सुरक्षा (धोखाधड़ी के खिलाफ) रखने के लिए मैं सादा पाठ में गेम द्वारा जेनरेट किए गए कोड को स्टोर नहीं करना चाहता हूं। लेकिन जब से मुझे एक खिलाड़ी को कोड देने में सक्षम होना चाहिए, जब उसने कार्य पूरा कर लिया है, तब से मैं इसे रोक नहीं सकता हूं, तब से मैं इसे पुनः प्राप्त नहीं कर सकता।सबसे सुरक्षित पायथन "पासवर्ड" एन्क्रिप्शन

तो पाइथन का उपयोग करके कुछ एन्क्रिप्ट/डिक्रिप्ट करने का सबसे सुरक्षित तरीका क्या है?

+0

यहां देखें: http://stackoverflow.com/questions/172486/what-pure-python-library-to-use-for- एईएस -256-एन्क्रिप्शन –

+2

यदि आप उन कोडों को सादे पाठ में संग्रहीत करते हैं तो आप धोखा देने में सक्षम कैसे होंगे? – innaM

+0

बस किसी को कोड के साथ डेटाबेस तालिका पकड़ने के कारण ... – espenhogbakk

उत्तर

5

यदि आपकी स्क्रिप्ट पासवर्ड को डीकोड कर सकती है, तो क्या कोई आपके सर्वर पर टूट सकता है। एन्क्रिप्शन केवल तब ही उपयोगी होता है जब कोई इसे अनलॉक करने के लिए पासवर्ड में प्रवेश करता है - अगर यह अनलॉक रहता है (या स्क्रिप्ट को अनलॉक करने का पासवर्ड है), तो एन्क्रिप्शन व्यर्थ है

यही कारण है कि हैशिंग अधिक उपयोगी है, क्योंकि यह एक उपयोगी है एक तरफ प्रक्रिया - यहां तक ​​कि अगर कोई आपके पासवर्ड हैश को जानता है, तो उन्हें पता नहीं है कि वे इसे उत्पन्न करने के लिए जो सादा-पाठ दर्ज करना चाहते हैं (बिना ब्रूट-बल के बहुत सारे)

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

शायद वास्तव में गेम खेलने से पासवर्ड चोरी करने के लिए इसे कम आकर्षक बनाने का तरीका सोचें? उदाहरण के लिए, एक गेम था (मुझे याद नहीं आया कि यह क्या था) यदि आपने स्तरीय स्किप धोखा का उपयोग किया है, तो आप अगले स्तर पर गए लेकिन इसे "पूर्ण" के रूप में चिह्नित नहीं किया गया, या आप स्तर को छोड़ सकते हैं लेकिन कोई अंक नहीं मिला।या प्रोजेक्ट यूलर को देखें, आप कोई स्तर कर सकते हैं, लेकिन अगर आप उत्तर दर्ज करते हैं तो आपको केवल अंक मिलते हैं (और जवाब का जवाब खेल का पूरा बिंदु है, इसलिए धोखाधड़ी खेल के खेल को हरा देती है)

यदि क्या तुम सच में पागल लोकप्रिय विषम हैं .. आप संभवतः उपयोग विषम क्रिप्टो, जहाँ आप मूल रूप से कुछ key A साथ एन्क्रिप्ट सकता है, और आप केवल key B के साथ पढ़ सकते हैं,

मैं GPG एन्क्रिप्शन का उपयोग के लिए एक समान अवधारणा के साथ आया था (क्रिप्टो सिस्टम, मुख्य रूप से ईमेल एन्क्रिप्शन या हस्ताक्षर के लिए उपयोग किया जाता है) to secure website data। मुझे पूरा यकीन नहीं है कि यह गेम स्तर के पासवर्ड को सुरक्षित करने के लिए कैसे लागू होगा, और जैसा कि मैंने कहा था, आपको यह भी मानने के लिए वास्तव में पागल होना चाहिए ..

संक्षेप में, मैं कहूंगा कि पासवर्ड में पासवर्ड स्टोर करें सादा पाठ, और अपनी सुरक्षा-चिंताओं को कहीं और ध्यान केंद्रित करें (वेब ​​अनुप्रयोग कोड स्वयं)

+0

मैं अधिकांश भाग के लिए आपसे सहमत हूँ, और यह है कि क्या मैं proporbly साथ में पहुंचते हैं। मैं भी सोच रहा हूँ कि यह "असंभव" एसक्यूएल injectons और सामान करने के लिए अगर मैं कर वहाँ सादे पाठ में स्तर पासवर्ड संग्रहीत करने में नोए समस्या है कि, जब कोई उन्हें बाहर निकलने में सक्षम होना चाहिए, लेकिन यदि वे उन्हें बाहर निकलना , वे एक समस्या के बिना खेल गर्त "रन" कर सकते हैं और हो सकता है विजेता ... तो मैं सोच रहा था कि केवल सुरक्षा के होने के लिए, कुछ एन्क्रिप्शन चोट नहीं होगा। – espenhogbakk

+0

और GPG एन्क्रिप्शन समाधान एक छोटे से पागल हाँ प्रतीत होता है :) – espenhogbakk

2

यदि यह एक वेब गेम है, तो आप कोड सर्वर को स्टोर नहीं कर सकते हैं और जब उन्होंने कोई कार्य पूरा किया है तो उन्हें क्लाइंट को भेज सकते हैं? आपके गेम का आर्किटेक्चर क्या है?

एन्क्रिप्शन के लिए, शायद pyDes जैसी कुछ कोशिश करें?

5

सबसे सुरक्षित एन्क्रिप्शन कोई एन्क्रिप्शन नहीं है। पासवर्ड को हैश में कम किया जाना चाहिए। यह एक तरफा परिवर्तन है, जिससे पासवर्ड (लगभग) अप्राप्य हो जाता है।

किसी को कोड देने पर, आप वास्तव में सुरक्षित होने के लिए निम्नलिखित कर सकते हैं।

(1) कुछ यादृच्छिक स्ट्रिंग उत्पन्न करते हैं।

(2) उन्हें स्ट्रिंग दें।

(3) आपके द्वारा जेनरेट की गई स्ट्रिंग के हैश को सहेजें।

एक बार।

यदि वे कोड को "भूल जाते हैं, तो आपको (1) सुनिश्चित करना होगा कि वे कोड दिए जाने के लिए अधिकृत हैं, फिर (2) प्रक्रिया फिर से करें (एक नया कोड उत्पन्न करें, उन्हें दें, सहेजें हैश।)

+0

सवाल के मुताबिक, हैश अच्छे नहीं हैं, क्योंकि उन्हें प्लेयर को –

+2

@ एड्रियन: अच्छा बिंदु बता सकते हैं। हालांकि, मुझे लगता है कि सवाल खराब है। या, यह वास्तविक सुरक्षा नहीं है, इस मामले में एन्क्रिप्शन वास्तव में ज्यादा मदद नहीं करता है। –

+0

एक और पद था, लेकिन नष्ट कर दिया गया मुझे लगता है कि एक बहुत अच्छा विचार था: उपयोगकर्ता नाम से में एक स्ट्रिंग के हैश उत्पन्न + "_ mygame _" + स्तर (शायद यह भी एक नमक बेहतर सुरक्षा के लिए जोड़ सकता हूँ?) मैं जो पोस्ट नहीं जानते इसे बाद में हटा दिया गया, लेकिन मुझे लगता है कि यह एक अच्छा दृष्टिकोण है। –

0

आपका प्रश्न बिल्कुल स्पष्ट नहीं है। आप डिक्रिप्शन कहां चाहते हैं? एक तरफ या दूसरा, सादे टेक्स्ट को सतह पर होना पड़ता है क्योंकि आपको खिलाड़ियों को अंततः इसे जानने की आवश्यकता होती है।

cipher चुनें और इसके साथ किया जाए।

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