2011-08-10 11 views
16

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

को देखते हुए इस समस्या को यहां सेट कुछ विचार मैं सोच कर दिया गया है

** खेल पर के बारे में एक सत्र ID कि समय की एक निश्चित राशि के बाद समाप्त हो सत्यापन के लिए सर्वर के लिए भेजा जा करने के लिए भेजने शुरू कर रहे हैं

समस्या कि यह आसानी से शुरू आईडी तो का अनुरोध सिर्फ स्कोर

खेल है कि सर्वर पर पोस्ट व्यक्ति को सत्यापित करने के भीतर ** चौकियों वास्तव में pla है फोर्जिंग द्वारा शोषण किया जा सकता है खेल

फिर यह कुछ चालाक पटकथा

+0

इसे एक प्रश्न में बदलने के बारे में सोचें ... –

+0

मुझे लगता है कि यह एक सवाल है @marc B – samccone

+0

@Marc B: "... खेल की अंत स्थिति के बाद सर्वर पर उच्च स्कोर को सुरक्षित रूप से कैसे हटाया जा सकता है। .. "। यह भ्रमित कैसे है? –

उत्तर

8

के लिए SessionID + चौकी आईडी का उपयोग खेल के एक पुनरावृत्ति अपलोड करें और स्कोर को सत्यापित सर्वर पर उस रीप्ले से। बेशक यह केवल तभी काम करता है जब आपका गेम प्रतिलिपि का समर्थन करता है।

कम से कम क्या हो रहा है इसका एक मोटा लॉग बनाएं और कुछ व्यवहार्यता जांच लागू करें।

आपको कुछ ingame स्थिरता जांच भी जोड़नी चाहिए। अन्यथा मैं आर्टमोनी जैसे टूल का उपयोग करूंगा और गेम के दौरान स्कोर बदलूंगा।

लेकिन अंत में यदि उपयोगकर्ता एक बॉट लिखता है तो यह वास्तव में कठिन हो जाता है।

+0

किसी के देखे गए जीडब्ल्यूटी के वीडियो की तरह दिखता है। : डी –

+0

@ अमान जीडब्ल्यूटी क्या है? – CodesInChaos

+0

Google वेब टूलकिट। उन्होंने अपने परिचय वीडियो में बहुत ही समान सलाह दी है। –

1

के साथ संश्लेषित किया जा सकता है यिंग क्या यह ... सर्वर से अपने सत्र id लेते हैं, इस खेल में कुछ के साथ संयोजित और का उपयोग करें कि एक एन्क्रिप्शन कुंजी के रूप में, फिर अपने प्रस्तुत डेटा में भेज जो कुछ डेटा आप चाहते हैं + एक टाइमस्टैम्प या चौकियों से कुछ और ही खेल में

हो सकता है कि एन्क्रिप्शन कुंजी

+2

और उस व्यक्ति को गेम में शामिल कुंजी पढ़ने और जमा करने से पहले स्कोर को संशोधित करने से रोकता है। कुछ भी तो नहीं। यह नहीं किया जा सकता है। – Matt

+0

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

1

क्या कुछ इस तरह के बारे में:

  1. सर्वर एक अस्थायी रूप से भेज दिया है - 'हैश-हस्ताक्षरित' सर्वर का गुप्त कुंजी और टाइमस्टैम्प आदि द्वारा,
  2. कुछ आंतरिक datastructures + ग्राहक के आधार पर एक हैश है कुंजी और सर्वर के लिए भेज समय-समय पर
  3. SSL पर इस करते हैं

और मुझे इसे करने के लिए हरा @iamkrillin ... लेकिन मैं अभी भी करने वाले पोस्ट कर रहा हूँ यह :)

+1

और यह विफल रहता है यदि उपयोगकर्ता उच्च मान को भेजने के लिए हाईस्कॉर भेजने में थोड़ा बदलाव करता है जो कि 10 गुणा अधिक है। यदि ग्राहक से समझौता किया गया है तो कोई भी एन्क्रिप्शन आपको सहेज नहीं देगा। –

+0

क्या @Wladimir ने कहा - वास्तव में कार्यों को भेजने के बजाय आप डेटा संरचनाओं का 'हैश' भेज सकते हैं जैसा कि मैंने उल्लेख किया है - आपको उस डेटा की वैधता को पुन: उत्पन्न करने में सक्षम होना चाहिए हालांकि ... केवल कुछ चुनना किसी को सिस्टम को तोड़ने के लिए पर्याप्त समस्या को जटिल करेगा – PhD

+0

@Wladimir: टिप्पणी पोस्ट की गई। आपकी टिप्पणी समानांतर में आई :) – PhD

5

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

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