यह एक कोडन सवाल से, और अधिक एक प्रणाली डिजाइन प्रश्न / चुनौती है।
मूल रूप से, मैं एक साथ फेंकने की सोच रहा हूँ Bejeweled बस HTML, सीएसएस, और जावास्क्रिप्ट का उपयोग कर फेसबुक पर -esque खेल। यह ज्यादातर एक गैर तुच्छ परियोजना के माध्यम से FBJS के सभी छोटे चेतावनियां जानने के लिए की इच्छा के चलते है।
तो यहाँ सौदा है। जब फेसबुक के लिए विकसित करने, वास्तविक API कॉल बहुत महंगे हैं; न केवल वहाँ फेसबुक सर्वरों के लिए एक अतिरिक्त पद भी के एपीआई कॉल सीमा और के बारे में चिंता थ्रॉटल है। संक्षेप में, फेसबुक पर कम कॉल बेहतर। यहां तक कि इस सरल पहेली खेल के समय समस्या होने पर इस गठबंधन है, और वहाँ अच्छा कारण आक्रामक तरीके से सामान्य रूप में कॉलबैक की संख्या को कम करने के लिए है।
नहीं एक सुरक्षा विशेषज्ञ जा रहा है, यहाँ डिजाइन मैं के साथ आ गया है:
- खेल पृष्ठ में एक यादृच्छिक बीज एम्बेड करें।
- (आवश्यकतानुसार के साथ ही अतिरिक्त टुकड़े) खेल बोर्ड बनाने के लिए है कि बीज का प्रयोग करें।
- बीज (XOR, CONCATENATE और हैश, ऐसा ही कुछ) प्रत्येक खिलाड़ी चाल के बाद, पिछले चाल के बाद से समय के आधार पर दें। संपादित करें: मैं शायद यह भी वास्तविक कदम बीज परिवर्तनशील में लिया शामिल होना चाहिए।
- खेल पूरा होने पर निम्नलिखित वापस पोस्ट: खेल समय शुरू, प्रत्येक चाल लिया और जब, और क्लाइंट साइड का परिणाम है।
- सर्वर पर, दिए गए आंकड़ों के साथ खेल को फिर से चलाने, विवेक प्रारंभ समय की जाँच और समय ले जाते हैं, और उसके बाद इस बात की पुष्टि है कि परिणाम मैच।
- सेवा से वंचित कम करने के लिए, खेल ही बारी एक्स हालत से एक जीत के लिए बदलाव कर दिया जाएगा।
- सर्वर एक तरह की दैवज्ञ के रूप में इस्तेमाल किया जा रहा हतोत्साहित करने के लिए, यदि कोई उपयोगकर्ता वापस पोस्टिंग गलत खेल कुछ निरंतर समय एक्स के लिए प्रतिबंधित कर दिया जाएगा (एक्स मिनटों के अंतराल पर किया जा रहा है)।
एक यादृच्छिक बीज स्टोर करने के लिए इससे पहले कि खेल खेला जाता है, एक यह लाने के लिए के बाद खेल समाप्त हो गया है, और एक खिलाड़ी के स्कोर अद्यतन करने के लिए करता है, तो खेल मान्य है: इस डिजाइन खेल प्रति तीन फेसबुक कॉल खेला आवश्यकता है।
(क्या मैं सबूत के खिलाफ प्रणाली कोशिश कर रहा हूँ सीधे स्कोर स्पूफिंग निर्भर है ?: // ... myscore = 999999999 http , या समान)। मैं भी कम करने के लिए आगे देखने के लिए हमलों, जिसमें उपयोगकर्ता क्या टुकड़े अगले बोर्ड में आ रहे हैं बता सकते हैं करना चाहते हैं। होस्टिंग सर्वर (जानबूझकर या अन्यथा) पर सेवा हमलों से वंचित करना भी रोका जाना चाहिए।
वास्तविक सवाल है, किसी को भी इस डिजाइन में एक दोष देख सकते हैं? तुल्य, वहाँ एक सरल डिजाइन है कि मेरे मानदंडों को पूरा करती है?
नोट: मैं वाकिफ हूँ कि यह कैसे अनावश्यक शायद है, लेकिन इसके एक दिलचस्प सवाल कोई भी कम।
मैं कोशिश करते हैं और मेरी तर्क वर्णन आगे चल करने के लिए यहाँ कुछ संख्या फेंकने के लिए जा रहा हूँ, इन सुंदर किसी न किसी तरह कर रहे हैं, लेकिन मैं उपयोगी उम्मीद है।
एक 10x10 खेल बोर्ड मान लिया जाये, वहाँ ~ 200 संभावित चालें (दो आसन्न टुकड़े गमागमन) जिनमें से अधिकांश अमान्य हैं कर रहे हैं। मान लीजिए कि वहाँ प्रति बारी औसत 5 वैध चाल पर हैं करते हैं। अगर हम 50 30,000 से मिलीसेकेंड के फ्रेम करने के लिए खिलाड़ी कार्रवाई बाधित करते हैं, वहाँ 149,750 संभावित नए फेरबदल एल्गोरिथ्म बिट्स त्यागने नहीं है प्रदान की हैश कर रहे हैं; मैं कहना में आत्मविश्वास लगता है कम से कम 10,000 संभावित नए हैश एक हमलावर एक क्रिप्टोग्राफी द्वारा सुरक्षित हैश संभालने द्वारा गणना की जानी चाहिए जो प्रयोग किया जाता है देखते हैं। आप बहुत जल्दी अपने निर्णय पेड़ फट इस पर एक न्यूनतम-अधिकतम एल्गोरिथ्म फेंक है। इस पर एक खेल सत्र की समाप्ति फेंक, 30 मिनट का कहना है, और मैं हमले क्योंकि आप जो यथोचित के खिलाफ बचाव नहीं किया जा सकता है के लिए खेलने के लिए एक छोटे से बॉट प्रोग्राम लिखने के लिए जटिलता में बराबर विश्वास करते हैं।













