ความรู้เกี่ยวกับกลไกการแฮ็คจำเป็นสำหรับ MMO หรือไม่?


10

บอกว่าฉันกำลังวางแผนในอนาคต (ไม่ใช่ตอนนี้มีมากฉันต้องเรียนรู้ก่อน) มองการมีส่วนร่วมในโครงการกลุ่มที่จะทำให้เกมออนไลน์หลายผู้เล่นจำนวนมาก (mmo) และงานของฉันจะเป็นเครือข่าย ส่วน. ฉันไม่คุ้นเคยกับการเขียนโปรแกรมเครือข่าย (ฉันได้อ่านหนังสือพื้นฐานมากเกี่ยวกับ PHP, MySQL และฉันยุ่งกับWAMPเล็กน้อย)

ในช่วงที่ฉันเรียน PHP และ MYSQL ฉันควรจะดูแฮ็คไหม การแฮ็กในการสแกนพอร์ตการแฮ็กเราเตอร์ ฯลฯ ใน MMO ผู้คนมักจะพยายามโกงบอทและสถานการณ์เช่นนี้ แต่สถานการณ์ที่เลวร้ายที่สุดคือการมีคนแฮ็คฐานข้อมูล นี่เป็นเพียงความคิดของฉันในเรื่องนี้ฉันไม่รู้จริงๆ ฉันเข้าใจเครือข่ายค่อนข้างดีเช่น subnetting / ports / IP's (local / global) / etc

ในความเห็นของคุณ (ถ้าคุณเข้าใจในหัวข้อ, ให้ความรู้แก่ฉัน) ฉันควรเรียนรู้เกี่ยวกับสิ่งเหล่านี้เพื่อตอบโต้ความเป็นไปได้ของเหตุการณ์นี้หรือไม่?

นอกจากนี้จากสิ่งที่ฉันพูดถึง (การสแกนพอร์ตการแฮ็คเราเตอร์) มีอะไรอีกบ้างที่เกี่ยวข้องกับการแฮ็คที่ฉันควรพิจารณา ฉันไม่คุ้นเคยกับด้านที่เป็นอันตราย / ความปลอดภัยของระบบเครือข่าย

และหมายเหตุ: ฉันไม่ใช่เด็กที่พยายามเรียนรู้วิธีแฮ็ก ฉันต้องการเรียนรู้ให้มากที่สุดก่อนที่ฉันจะไปโรงเรียนและฉันจำเป็นต้องรู้จริงๆว่าฉันต้องเรียนหรือไม่


10
การเขียนระบบเซิร์ฟเวอร์ส่วนหลังที่สามารถปรับขนาดให้ใหญ่พอที่จะถือว่า "ใหญ่" นั้นเป็นปัญหาที่ใหญ่กว่าสำหรับคุณมากกว่าแฮ็คหากคุณ "ไม่คุ้นเคยกับการเขียนโปรแกรมเครือข่าย" คุณแน่ใจหรือไม่ว่าคุณกำลังพยายามสร้างMMOและไม่ใช่แค่เกมผู้เล่นหลายคนปกติ

1
ฉันเห็น; ถ้อยคำของคำถามของคุณทำให้ดูเหมือนว่าคุณกำลังพยายามทำงานกับ MMO นี้ในตอนนี้

7
ดังนั้นคุณไม่คุ้นเคยกับระบบเครือข่ายคุณวางแผนที่จะทำ MMO (ซึ่งเป็นสิ่งที่ยากที่สุดที่คุณสามารถวางแผนได้) และคุณถามตัวเองว่าคุณจำเป็นต้องเรียนรู้วิธีการป้องกันตัวเองจากแฮกเกอร์หรือไม่ เอ่อ แน่นอนคุณทำและคุณรู้ว่า จุดประสงค์ของการถามคืออะไร?
o0 '

2
ที่เกี่ยวข้อง, gamedev.stackexchange.com/a/21598/6937คำตอบสั้น ๆ ถ้าคุณเคยได้ยินเกี่ยวกับการพัฒนาซ้ำคุณสามารถดูการเรียนรู้ในลักษณะเดียวกัน ความปลอดภัยมีแนวโน้มที่จะทำงานเป็นส่วนเสริมหลังจากข้อเท็จจริงแล้ว ก่อนที่จะทำการเซิร์ฟเวอร์ MMO ที่เชื่อถือได้เพียงให้เซิร์ฟเวอร์ MMO, ก่อนที่จะทำที่อ่านคำตอบไปโพสต์ที่เชื่อมโยง
แบรนดอน

1
นี่เป็นเหมือนอายุ 14 ปีที่ต้องการเป็นประธานาธิบดีถามว่าเน็คไทที่เหมาะสมที่สุดในการสวมใส่กับสูทในอนาคตของเขาคืออะไร เด็กคนนั้นอาจไม่ใช่ประธานาธิบดีและแม้ว่าเขาจะมีปัญหาที่สำคัญมากกว่าการผูก คุณอาจไม่ประสบความสำเร็จในการสร้าง MMORPG ด้วย "โครงการกลุ่ม" และถ้าคุณมีปัญหาใหญ่กว่านี้
โทมัส Bonini

คำตอบ:


16

ใช่ใครบางคน (อันที่จริงมีหลายคน) ในทีมที่พัฒนาเกมแบบผู้เล่นหลายคนโดยไม่คำนึงถึงขนาดควรมีความรู้เกี่ยวกับแนวคิดความปลอดภัยเครือข่ายทั้งในระดับฮาร์ดแวร์และซอฟต์แวร์

นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งสำหรับเกมที่จะเกี่ยวข้องกับเอเจนซี่จำนวนมากเนื่องจากเป็นการลงทุนในส่วนของผู้เล่นและดังนั้นจึงเป็นสิ่งที่ทำให้เป้าหมายที่ร่ำรวยสำหรับแฮกเกอร์

การรักษาความปลอดภัยเครือข่าย / เครือข่าย / การรักษาความปลอดภัยทั่วไป (crytography และอื่น ๆ ) ชั้นเรียนในวิทยาลัยจะเป็นประโยชน์ในการให้ความรู้พื้นฐานที่จำเป็นบางอย่างแก่คุณเพื่อเป็นหนึ่งในผู้พัฒนาดังกล่าวข้างต้น


11

การรู้บางอย่างเกี่ยวกับความปลอดภัยเป็นความคิดที่ดีก่อนที่จะพยายามเขียนเกมแบบผู้เล่นหลายคน แต่สิ่งต่าง ๆ เช่นการสแกนพอร์ตและการแฮ็กเราเตอร์หรือแม้แต่การเข้ารหัสไม่ใช่สิ่งที่คุณควรพิจารณาในขั้นตอนนี้

แต่สิ่งที่คุณควรจะเรียนรู้เกี่ยวกับความไว้วางใจ , การตรวจสอบและความทนทาน รู้เล็กน้อยเกี่ยวกับจิตวิทยาโดยเฉพาะเกี่ยวกับความท้าทายและผลตอบแทนไม่ใช่เรื่องเลวร้ายเช่นกัน ฉันไม่สามารถสอนคุณได้มากมายจากคำตอบสั้น ๆ เช่นนี้ แต่นี่คือเคล็ดลับบางอย่างในการเริ่มต้นใช้งานโปรแกรมที่ปลอดภัย:

  • ปฏิบัติกับข้อมูลจากภายนอกการควบคุมโดยตรงของคุณราวกับว่ามันอาจไม่ใช่สิ่งที่คุณคาดหวัง ซึ่งรวมถึงการป้อนข้อมูลของผู้ใช้ทุกสิ่งที่คุณได้รับผ่านเครือข่ายและแม้กระทั่งทุกอย่างจากส่วนอื่น ๆ ของรหัสฐานข้อมูลของคุณ พยายามเข้าสู่ความคิดที่ไม่คิดเกี่ยวกับสิ่งที่อินพุตควรมีหรือแม้แต่สิ่งที่ผู้โจมตีอาจป้อนคุณแทน แต่เพียงเกี่ยวกับสิ่งที่อินพุตอาจเป็นได้และวิธีจัดการกับอินพุตที่คุณอาจได้รับอย่างปลอดภัย

  • เมื่อคุณพูดถึง PHP และ MySQL เริ่มต้นด้วยการดูการฉีด SQLและการโจมตีสคริปต์ข้ามไซต์ หากคุณคุ้นเคยกับภาษาระดับต่ำเช่น C ให้ตรวจสอบการโจมตีด้วยบัฟเฟอร์ล้น อย่าเพิ่งคิดว่าจะป้องกันพวกเขาอย่างไร - คิดว่าคุณจะเขียนโค้ดของคุณอย่างไรเพื่อให้ข้อผิดพลาดเช่นนั้นไม่สามารถเกิดขึ้นได้ไม่ว่าจะโดยอุบัติเหตุหรือโดยความอาฆาตพยาบาท ภาษาการเขียนโปรแกรมของคุณเกือบจะมีเครื่องมือที่จะให้คุณทำอย่างนั้นถ้าคุณเพิ่งเรียนรู้ที่จะใช้พวกเขาตามที่พวกเขาต้องการ

  • ในเกมที่มีผู้เล่นหลายคนคุณอาจมีรหัสลูกค้าบางอย่างที่ทำงานบนคอมพิวเตอร์ของผู้เล่น จะได้ใช้ความคิดที่ว่าผู้ใช้สมาร์ทพอและมุ่งมั่นที่จะเสมอจะสามารถที่จะประนีประนอมรหัสดังกล่าวและทำให้มันทำในสิ่งที่พวกเขาต้องการ อย่าไว้วางใจลูกค้าหากคุณสามารถหลีกเลี่ยงได้ หากคุณไม่สามารถหลีกเลี่ยงได้ให้แน่ใจว่าจะเชื่อมั่นเท่าที่คุณต้องการ

  • พยายามอย่าวางไข่ทั้งหมดไว้ในตระกร้าเดียว หากคุณไม่สามารถรันเกมเว็บไซต์และฐานข้อมูลของคุณบนเซิร์ฟเวอร์ที่แยกต่างหากอย่างน้อยใช้งานภายใต้บัญชีแยกต่างหากและตรวจสอบให้แน่ใจว่าไม่มีเกมใดที่สามารถเข้าถึงกันได้มากกว่าที่พวกเขาต้องการ ตกลงอาจเป็นได้ทั้งเกมและเว็บไซต์ของคุณต้องการเข้าถึงฐานข้อมูลผู้ใช้ แต่แน่นอนว่าพวกเขาไม่ต้องการผู้ดูแลระบบในการเข้าถึงมันใช่ไหม? บางทีพวกเขาอาจไม่ต้องการมากกว่าการเข้าถึงแบบอ่านอย่างเดียว อย่างน้อยแม้ว่าคุณจะไม่บังคับใช้การแยกประเภทที่เข้มงวดเช่นนี้ให้เริ่มต้นออกแบบเกมของคุณเพื่อให้สามารถใช้งานได้ในภายหลัง - อย่าทำให้เซิร์ฟเวอร์เกมของคุณต้องมีผู้ดูแลระบบในการเข้าถึงฐานข้อมูล โปรดจำไว้ว่าซอฟต์แวร์ทั้งหมดมีข้อบกพร่องและบางคนจะช้าก็เร็ว ค้นหาช่องโหว่ในตัวคุณ

โดยทั่วไปสิ่งที่จะตระหนักถึงเรื่องความปลอดภัยก็คือว่ามันเป็นความคิด ไม่เกี่ยวกับการรู้คำรักษาความปลอดภัยล่าสุดหรือวิธีการโจมตีล่าสุดหรือการคาดการณ์ว่าแฮ็กเกอร์จะทำอะไรก่อนที่จะทำ (แม้ว่าสิ่งเหล่านี้อาจเป็นการใช้งานบางอย่าง)

การเขียนโปรแกรมความปลอดภัยที่แท้จริงคือการเรียนรู้วิธีการใช้เครื่องมือที่คุณมีในแบบที่พวกเขาตั้งใจจะใช้เกี่ยวกับการแบ่งรหัสของคุณออกเป็นชิ้นเล็ก ๆ พอที่คุณสามารถเข้าใจสิ่งที่แต่ละคนทำ ส่วนอื่น ๆ ถูกบุกรุก) และเกี่ยวกับการเขียนรหัสของคุณเพื่อคาดหวังสิ่งที่ไม่คาดคิด หากคุณทำทุกอย่างคุณจะไม่จำเป็นต้องรู้ว่าแฮ็กเกอร์อาจลองทำอะไรเพราะคุณจะต้องเตรียมพร้อมรับมือ


8

ส่วนตัวผมจะไม่ต้องกังวลเกี่ยวกับแฮกเกอร์เลย

เหตุผลง่าย: คุณจะไม่ได้รับแฮกเกอร์ / คนขี้โกงจนกว่าคุณจะเป็นเกมยอดนิยม คือคุ้มค่ากับเวลาในการแฮ็ค / โกง รอจนกว่าคุณจะมีเกมที่สร้างขึ้นก่อนและรายได้เข้ามาเพื่อระดมทุนสิ่งต่าง ๆ เหล่านั้น

คุณสามารถใช้เวลามาก (ฉันหมายถึงมีจำนวนมาก) เวลาพยายามที่จะหลอกพิสูจน์รหัสของคุณว่าจะไม่ถูกแฮ็กหรือโกง หรือคุณสามารถสำรองข้อมูลนอกสถานที่ปกติ (ซึ่งคุณควรทำต่อไป) และสร้างจุดคืนค่าปกติ เมื่อการหาประโยชน์เกิดขึ้นให้ปิด


1
ในขณะที่ผมยอมรับว่าการทำดีเกมควรจะมีความสำคัญมากกว่าการทำที่เชื่อถือได้หนึ่งผมจะบอกว่าบางระดับของความตระหนักถึงปัญหาการรักษาความปลอดภัยร่วมกันและการปฏิบัติที่ดีที่สุดทั่วไปเป็นสิ่งที่ดีที่จะมีจากจุดเริ่มต้น มิฉะนั้นคุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่ไม่สามารถป้องกันได้หากและเมื่อเกมของคุณเริ่มต้นขึ้น หากการออกแบบดั้งเดิมของคุณไม่ปลอดภัยโดยพื้นฐานการพยายามแก้ไขมันในภายหลังอาจเหมือนกับการต่อสู้กับไฮดรา: ทุกครั้งที่คุณปิดการโกงช่องโหว่คนขี้โกงจะค้นหาอีกสองคนและวิธีเดียวที่จะหยุดมันอาจเป็นการออกแบบใหม่และเขียนเศษส่วนจำนวนมาก ของ codebase ของคุณตั้งแต่เริ่มต้น
Ilmari Karonen

1
@IlmariKaronen ฉันเห็นด้วยในแนวคิด แต่ไม่ใช่ในทางปฏิบัติ ด้วยบริบทของผู้ถามพวกเขาจำเป็นต้องมุ่งเน้นไปที่การเรียนรู้เครือข่ายโดยทั่วไป เมื่อคุณเรียนรู้เครือข่ายคุณมักจะเรียนรู้เกี่ยวกับการเข้ารหัส พวกเขากำลังอยู่ในช่วงเริ่มต้น ความปลอดภัยเป็นสิ่งสำคัญเฉพาะเมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่และคุณจะสร้างสิ่งที่คุ้มค่าต่อการรักษาความปลอดภัย ผู้ที่ถามคำถามประเภทนี้ต้องไปยังที่ที่พวกเขาสามารถสร้างบางสิ่งที่คุ้มค่ากับการรักษาความปลอดภัยไว้ก่อน
แบรนดอน

1
@IlmariKaronen ฉันเห็นด้วยอย่างยิ่ง: หากคุณไม่คำนึงถึงความปลอดภัยคุณจะต้องไปที่ Sony โซนี่รอดพ้นจากความหายนะเพียงเพราะมันใหญ่ แต่คนอื่นก็น่าจะไป FUBAR
o0 '

2
@Lohoris ฉันจะทิ้งมันไว้คนเดียวหลังจากนี้ แต่นี่ไม่ใช่ sony นี่คือคนที่บอกว่าเขาเพิ่งจะเรียนรู้พื้นฐานของระบบเครือข่าย เรียนรู้เรื่องความปลอดภัยเมื่อคุณเข้าใจว่าการรักษาความปลอดภัยคืออะไร ...
แบรนดอน

ใช่ - นี่คือคำตอบที่ดีที่สุด: หากเกมของคุณได้รับความนิยมอย่างมากและประสบปัญหาด้านความปลอดภัยคุณสามารถจ้างนักพัฒนาเพิ่มเติมได้ตลอดเวลาและปรับโครงสร้างเครือข่ายเพื่อให้ปลอดภัยยิ่งขึ้น กังวลเกี่ยวกับมันในภายหลัง
MarkR
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.