2012-10-28 8 views
9

मैंने कैनवास में आधारित HTML5 गेम लिखा और मुझे कोई समस्या है।एचटीएमएल 5 गेम - चर के संशोधन के खिलाफ कैसे रक्षा करें

मैं उस तरह वर का उपयोग करें:

var score = 0; 
// another code 
++score; 

लेकिन उपयोगकर्ता कि वर (FireBug में जैसे, या क्रोम संपादक।) संपादित कर सकते हैं - स्कोर को हैक कर लिया।

कोई भी विचार?

उत्तर

2

इससे बचने के लिए आप कुछ भी नहीं कर सकते हैं। आप कोड को obfuscating द्वारा कठिन बना सकते हैं, लेकिन स्कोर को हैक करना अभी भी संभव है।

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

और यदि दूसरा स्कोर मान दूसरे स्कोर मान से दोगुना है, तो वर्तमान स्कोर को सभी चर स्कोरों की तुलना करके खोजने के लिए और भी कठिन होता है।

+0

धन्यवाद निजी और सार्वजनिक वर के बारे में Crockford के आलेख देखें। मैं http://www.javascriptobfuscator.com/ का उपयोग करता हूं और ठीक काम करता है। – Sekhmet

3

आप स्कोर चर एक वर्ग निर्माता के अंदर एक स्थानीय चर के रूप में, कि जिस तरह से यह करने के लिए प्राप्त करने के लिए कठिन है डाल सकते हैं:

function MyClass() { 
    var score = 0; 

    this.somethingHappened = function() { 
    if (someondition) { 
     score++; 
    } 
    } 

    this.getScore = function() { 
    return score; 
    } 

} 

यह निश्चित रूप से अभी भी कोड हैक करने के लिए संभव है, लेकिन यह बिल्कुल के रूप में नहीं है एक वैश्विक चर बदलने के रूप में सरल।

+0

हां, लेकिन उपयोगकर्ता भी स्कोर संपादित कर सकते हैं। – Sekhmet

+0

@ सेक्रॉर्प आप पूरी वस्तु को भी बदल सकते हैं! मुझे लगता है कि आपको बेहतर सुरक्षा (= "अधिक कठिन बनाना") कोड होना चाहिए जो खेला गया हाईस्कॉर जोड़ता है। – ComFreek

+0

@ सेक्रॉर्प: हां, आप ऐसी स्क्रिप्ट नहीं बना सकते जो हैक करना असंभव है, आप केवल यह समझना मुश्किल कर सकते हैं कि इसे कैसे किया जाए। – Guffa

4

आप वास्तव में किसी भी कोड की रक्षा नहीं कर सकते जो क्लाइंट साइड पर चलता है!

इसलिए, आप अपने चर की सामग्री को सुरक्षित नहीं कर सकते हैं। आप केवल हैक करने के लिए और अधिक कठिन बना सकते हैं - जैसे गुफा ने कहा।

+0

यह सही है, आप क्या कर सकते हैं अपनी स्क्रिप्ट में पॉइंटर्स को obfuscating, संपीड़ित या जोड़कर कठिनाई को बदलना है ताकि टिप्पणियों को हटाना और सुनिश्चित करना मुश्किल हो, इस तरह मैं आसानी से जेएस स्क्रिप्ट को हैक करता हूं – PauAI

7

जावास्क्रिप्ट एक निष्पादित ग्राहक-पक्ष है। क्लाइंट पर जो कुछ भी होता है उसे नियंत्रित किया जा सकता है। इसके आसपास कोई रास्ता नहीं है। आप अपने कोड को खराब करने का प्रयास कर सकते हैं, लेकिन यह केवल धोखा देने के तरीके को खोजने में थोड़ा कठिन बनाता है। यह किसी ऐसे व्यक्ति को नहीं रोक सकता जो पर्याप्त निर्धारित है।

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

वैसे: हमें एक बहन साइट http://gamedev.stackexchange.com मिली जो विशेष रूप से गेम विकास के बारे में प्रश्नों के लिए है। आपको वहां कुछ बेहतर जवाब मिल सकते हैं।

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