क्या एक हैकिंग तंत्र का ज्ञान एक MMO के लिए आवश्यक है?


10

कहते हैं कि मैं भविष्य में योजना बना रहा था (अब नहीं! वहाँ मुझे पहले सीखने की ज़रूरत है) एक समूह परियोजना में भाग लेने की तलाश में है जो एक बड़े पैमाने पर मल्टीप्लेयर ऑनलाइन गेम (विजुअल) बनाने जा रहा है, और मेरी नौकरी नेटवर्किंग होगी हिस्से। मैं नेटवर्क प्रोग्रामिंग से परिचित नहीं हूं (मैंने PHP, MYSQL पर एक बहुत ही बुनियादी पुस्तक पढ़ी है और मैंने WAMP के साथ थोड़ा गड़बड़ कर दिया है )।

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

आपकी पेशेवर राय में, (यदि आप विषय को समझते हैं, तो मुझे बताएं) क्या मुझे ऐसा होने की संभावना का सामना करने के लिए इन चीजों के बारे में सीखना चाहिए?

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

और ध्यान दें: मैं कुछ बच्चा नहीं है जो हैक करने का तरीका जानने की कोशिश कर रहा है। मैं सिर्फ कॉलेज जाने से पहले जितना संभव हो उतना सीखना चाहता हूं, और मुझे वास्तव में यह जानने की जरूरत है कि मुझे यह अध्ययन करने की आवश्यकता है या नहीं।


10
बैक-एंड सर्वर सिस्टम लिखना जो बड़ी संख्या में बड़े पैमाने पर "बड़े पैमाने पर" माना जा सकता है आपके लिए हैकिंग की तुलना में बहुत बड़ी समस्या है यदि आप "नेटवर्क प्रोग्रामिंग से परिचित नहीं हैं।" क्या आप वाकई एक नियमित रूप से मल्टीप्लेयर गेम नहीं बल्कि एक MMO बनाने की कोशिश कर रहे हैं ?

1
समझा; आपके प्रश्न का शब्दांकन वास्तव में ऐसा लगता है जैसे आप इस MMO पर काम करने की कोशिश कर रहे हैं।

7
तो, आप नेटवर्किंग से परिचित नहीं हैं, आप एक MMO करने की योजना बनाते हैं (जो कि आपके लिए सबसे मुश्किल काम हो सकता है), और आप खुद से पूछते हैं कि क्या आपको वास्तव में हैकर्स के खिलाफ खुद का बचाव करना सीखना है। उह। बेशक आप करते हैं, और आप जानते हैं कि। यह पूछने की बात क्या है?
ओ ० '।

2
संबंधित, gamedev.stackexchange.com/a/21598/6937 संक्षिप्त उत्तर, यदि आपने कभी पुनरावृत्त विकास के बारे में सुना है, तो आप उसी तरह से सीख सकते हैं। सुरक्षा तथ्य के बाद एक ऐड के रूप में काम करती है। एक सुरक्षित MMO सर्वर बनाने से पहले, बस एक विजयी सर्वर बनाएं, ऐसा करने से पहले, लिंक किए गए पोस्ट का उत्तर पढ़ें
Brandon

1
यह एक 14 साल के व्यक्ति की तरह है जो राष्ट्रपति बनना चाहता है कि वह अपने भविष्य के सूट के साथ पहनने के लिए सबसे उपयुक्त टाई कौन सा है। वह बच्चा शायद राष्ट्रपति नहीं होगा, और यहां तक ​​कि अगर वह वह था, तो टाई की तुलना में अधिक महत्वपूर्ण समस्याएं होंगी। आप शायद एक "समूह परियोजना" के साथ सफलतापूर्वक एक MMORPG नहीं बना पाएंगे, और यदि आप करते हैं तो आपको इससे बड़ी समस्याएं हैं।
थॉमस बोनीनी

जवाबों:


16

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

यह उन खेलों के लिए विशेष रूप से सच है जिसमें एजेंसी की बहुत दृढ़ता शामिल होगी, क्योंकि यह खिलाड़ी के हिस्से पर निवेश का गठन करता है और परिणामस्वरूप ऐसा कुछ होता है जो हैकर्स के लिए एक आकर्षक लक्ष्य बनाता है।

कॉलेज में नेटवर्किंग / नेटवर्क सुरक्षा / सामान्य सुरक्षा (क्रेटोग्राफ़ी, एट सेटेरा) कक्षाएं लेना, आपको पूर्वोक्त डेवलपर्स में से एक होने के लिए आवश्यक पृष्ठभूमि ज्ञान में से कुछ देने में सहायक होगा।


11

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

बल्कि, आपको जिन चीजों के बारे में सीखना चाहिए, वे हैं , विश्वास , मान्यता और मजबूती । मनोविज्ञान के बारे में थोड़ा जानना, विशेष रूप से चुनौतियों और पुरस्कारों के बारे में, यह कोई बुरी बात नहीं है। मैं आपको इस तरह से थोड़े से जवाब में वास्तव में बहुत कुछ नहीं सिखा सकता, लेकिन यहां आपको सुरक्षित प्रोग्रामिंग के साथ शुरुआत करने के लिए कुछ सुझाव दिए गए हैं:

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

  • चूंकि आप PHP और MySQL का उल्लेख करते हैं, SQL इंजेक्शन और क्रॉस-साइट स्क्रिप्टिंग हमलों को देखकर शुरू करें । यदि आप C जैसी निम्न-स्तरीय भाषाओं से भी परिचित हैं, तो बफर अतिप्रवाह हमलों में देखें। केवल उन्हें रोकने के तरीके के बारे में न सोचें - इस बारे में सोचें कि आप अपना कोड कैसे लिखेंगे ताकि इस तरह की गलतियाँ न हों, चाहे वह दुर्घटना से हो या दुर्भावना से। आपकी प्रोग्रामिंग भाषा में लगभग निश्चित रूप से आपके पास ऐसा करने के लिए उपकरण हैं, यदि आप केवल उनका उपयोग करना सीखते हैं जैसा कि वे चाहते हैं।

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

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

सामान्य तौर पर, सुरक्षा के बारे में महसूस करने की बात यह है कि यह एक मानसिकता है । यह नवीनतम सुरक्षा buzzwords के बारे में जानने के बारे में नहीं है, या नवीनतम हमले कैसे काम करते हैं या यह अनुमान लगाने की कोशिश करने के बारे में कि हैकर्स इससे पहले कि वे क्या करेंगे (हालांकि उन सभी चीजों का कुछ उपयोग हो सकता है)।

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


8

व्यक्तिगत रूप से, मुझे हैकर्स के बारे में अभी तक चिंता नहीं होगी ।

तर्क सरल है: जब तक आप एक काफी लोकप्रिय खेल नहीं हो जाते, आपको हैकर्स / थिएटर नहीं मिलेंगे; हैक करने / धोखा देने के लिए समय के लायक है। तब तक प्रतीक्षा करें जब तक आपके पास पहले से स्थापित कोई खेल न हो और उन प्रकार की चीजों को निधि देने के लिए राजस्व आ रहा हो।

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


1
जबकि मैं मानता हूं कि एक अच्छा खेल बनाना एक सुरक्षित बनाने पर प्राथमिकता देना चाहिए , मैं कहूंगा कि सामान्य सुरक्षा मुद्दों और सामान्य सर्वोत्तम प्रथाओं के बारे में जागरूकता की कुछ हद तक शुरुआत से ही अच्छा है। अन्यथा आप अपने आप को एक अस्थिर स्थिति में पा सकते हैं यदि और जब आप खेल को बंद करते हैं। यदि आपका मूल डिज़ाइन मूल रूप से असुरक्षित है, तो इसे बाद में पैच करने की कोशिश करना एक हाइड्रा से लड़ने जैसा हो सकता है: हर बार जब आप एक कारनामे को बंद करते हैं, तो थिएटर दो और ढूंढते हैं, और इसे रोकने का एकमात्र तरीका एक पर्याप्त अंश को फिर से डिज़ाइन और फिर से लिखना हो सकता है। खरोंच से अपने कोडबेस की।
इल्मरी करोनन

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

1
@IlmariKaronen मैं पूरी तरह से सहमत हूँ: यदि आप सुरक्षा की अवहेलना करते हैं तो आप सोनी पर जाएँगे। सोनी अपनी आपदा से सिर्फ इसलिए बच गया क्योंकि यह इतना बड़ा था, लेकिन किसी और ने शायद फ़्यूबर को छोड़ दिया।
ओ ० '।

2
@Lohoris। मैं इसके बाद इसे अकेला छोड़ दूंगा, लेकिन यह सोनी नहीं है। यह एक लड़का है जिसने कहा कि वह अभी नेटवर्किंग की मूल बातें सीख रहा है। एक बार सुरक्षा को समझें कि यह क्या है जिसे आप सुरक्षित कर रहे हैं ...
ब्रैंडन

हां - यह सबसे अच्छा उत्तर है: यदि आपका गेम बड़े पैमाने पर लोकप्रिय हो गया है और सुरक्षा समस्याओं से पीड़ित है, तो आप हमेशा अतिरिक्त डेवलपर्स आदि को किराए पर ले सकते हैं, और इसे और अधिक सुरक्षित बनाने के लिए अपनी नेटवर्क योजना को फिर से तैयार कर सकते हैं। बाद में इसकी चिंता करें।
मार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.