เกมแบบผู้เล่นหลายคนควรจัดการกับการรับรองความถูกต้องอย่างไร


27

ฉันได้ซุ่มซ่อนเพื่อทำความเข้าใจว่าระบบการตรวจสอบสิทธิ์จะทำงานในเกมได้อย่างไร แต่หลังจากการค้นหาหลายครั้งดูเหมือนว่าการทำงานกับ ssl / ใบรับรองอาจมีความซับซ้อนเพียงเล็กน้อยสำหรับเกมแบบผู้เล่นหลายคนที่มีความจุน้อยกว่า MMO

ฉันรู้ว่าเกมที่มีผู้เล่นหลายคนที่ประสบความสำเร็จต้องการสิ่งนี้ แต่ฉันต้องการตรวจสอบว่าเกมที่มีผู้เล่นหลายคนอื่น ๆ นั้นเป็นไปตามข้อควรระวังนี้หรือไม่

แก้ไข : ฉันจะอธิบายสิ่งที่ฉันมีอยู่ในใจ เซิร์ฟเวอร์ไม่เพียง แต่จัดการกับเกมลอจิก แต่ยังตรวจสอบสิทธิ์ ดังนั้นเพื่อที่จะเล่นบนเซิร์ฟเวอร์เฉพาะ (ทุกคนสามารถเริ่มต้นได้) คุณต้องลงทะเบียนบัญชีบนเซิร์ฟเวอร์ก่อนและทุกครั้งที่คุณต้องการเล่นที่นั่นให้เข้าสู่ระบบตามปกติ (ผู้ใช้รหัสผ่าน / ชื่อ)

คำถามของฉันคือจะไม่ให้ช่องทางที่ปลอดภัยสำหรับการเข้าสู่ระบบ / การลงทะเบียนบัญชีที่จะลืม / เข้าใจในบริบทนี้หรือไม่? ฉันสนใจที่จะรู้ว่าเกมที่มีสถาปัตยกรรมคล้ายกันจะจัดการกับเรื่องนี้อย่างไร


ใบรับรอง SSL มีความซับซ้อนและเจ็บปวดในการจัดการ ฉันแนะนำให้คุณอยู่ห่าง ๆ
ashes999

4
@ ashes999 ที่จริงแล้วความเจ็บปวดมาจากการเซ็นชื่อโดยเจ้าหน้าที่ของ CA สำหรับเกมที่ไม่สื่อสารกับเซิร์ฟเวอร์ผ่านเบราว์เซอร์คุณสามารถใช้ใบรับรองที่ลงนามด้วยตนเองได้คุณยังสามารถให้ลูกค้าตรวจสอบว่ามีการใช้ใบรับรองที่ถูกต้อง รับห้องสมุดที่ดีมันค่อนข้างง่ายต่อการตั้งค่า
aaaaaaaaaaaa

มีโซลูชั่นการโฮสต์แอปที่ให้ SSL ฟรีแก่คุณผ่านโดเมนย่อยและไวด์การ์ด คุณสามารถใช้ HTTPS โดยไม่จำเป็นต้องคิดถึงใบรับรอง SSL ด้วยตัวเอง เช่นเดียวกับตัวเลือกอื่น
ฌอน Middleditch

@eBusiness คุณพูดถูก
ashes999

คำตอบ:


41

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

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

เว็บเกม

ตัวเลือกที่ได้รับความนิยมโดยเฉพาะอย่างยิ่งสำหรับเกมบนเว็บแม้ว่ามันจะใช้งานได้กับเกมแบบดั้งเดิมก็คือการใช้บริการตรวจสอบความถูกต้องโดยบุคคลที่สามบนเว็บ Facebook และ Google ทั้งคู่มี API ที่มีเอกสารที่ดี (ทั้งคู่ใช้ API มาตรฐาน iirc) สำหรับการตรวจสอบสิทธิ์ พวกเขาต้องการความสามารถในการเปิดหน้าต่างเบราว์เซอร์และนำผู้ใช้ไปยังบริการของพวกเขา แต่มันค่อนข้างง่ายที่จะทำบนแพลตฟอร์มที่ไม่ใช่คอนโซลส่วนใหญ่และแน่นอนว่าเป็นเรื่องง่ายสำหรับเกมบนเว็บ

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

ฉันจะไม่อ้างสิทธิ์เกมที่มีผู้เล่นหลายคนโดยส่วนใหญ่ทำเช่นนี้เพราะพวกเขาไม่ได้ทำ แต่ฉันจะอ้างว่าเกมออนไลน์ทางออนไลน์ส่วนใหญ่ทำเช่นนี้

สำหรับเกมดั้งเดิม (ที่ไม่ใช่เว็บ) การอำนวยความสะดวกขั้นตอนการเข้าสู่ระบบนี้เป็นไปได้โดยการฝังเบราว์เซอร์ (Awesomium, Chromium Embedded Framework หรือ Webkit เป็นตัวเลือกยอดนิยม) หรือเรียกออกจากเบราว์เซอร์ภายนอก เอาคุกกี้ auth ออกจากและไม่ได้ง่ายกว่าการฝังหนึ่งในห้องสมุดดังกล่าว)

ตัวอย่างทั่วไปของวิธีนี้คือเกม Facebook ทุกเกม

เกมดั้งเดิมที่ใช้ HTTPS

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

คุณไม่จำเป็นต้องไปขอใบรับรอง SSL ที่กำหนดเองด้วยซ้ำ มีผู้ให้บริการโฮสต์แอปออนไลน์ที่ให้โดเมนย่อยแก่คุณและใช้ไวด์การ์ด SSL Cert คุณสามารถใส่บริการตรวจสอบสิทธิ์ของคุณได้ที่ mygame.someservice.com ซึ่งครอบคลุมโดย * .someservice.com สัญลักษณ์ตัวแทนที่บริการบางอย่างเก็บรักษาไว้และคุณก็พร้อมที่จะไป

แนวคิดในที่นี้คือผู้ใช้เข้าสู่บริการของคุณซึ่งสร้างคุกกี้เซสชันที่ไม่ซ้ำกันซึ่งผู้ใช้สามารถส่งผ่านไปยังเซิร์ฟเวอร์เกมหลักของคุณ เซิร์ฟเวอร์จะถามระบบการเข้าสู่ระบบว่าคุกกี้นั้นถูกต้องสำหรับผู้ใช้ที่ร้องขอหรือไม่ โดยปกติจะมีเป็นมากหมดเวลาสั้น ๆ เกี่ยวกับคุกกี้โดยคำสั่งของวินาที (15-30, ตัวอย่าง) และมันก็ไม่ถูกต้องโดยทั่วไปใช้ครั้งเดียวทำให้การโจมตี replay เป็นไปไม่ได้

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

ข้อดีอย่างหนึ่งของการแยกบริการเข้าสู่ระบบของคุณจากเซิร์ฟเวอร์เกมหลักคือมันช่วยให้การทำงานภายนอกที่จะเชื่อมโยงกับบัญชีผู้ใช้เป็นอิสระจากเกม คุณอาจมีคุณสมบัติบัญชีบางอย่าง (ดูรูปแทนตัวหรือ) บนเว็บไซต์ของคุณหรือคุณอาจอนุญาตให้เชื่อมโยงบัญชี Facebook เข้ากับบัญชีของคุณหรือคุณอาจมีหลายเกมที่แชร์แพลตฟอร์มบัญชีพื้นฐานเดียว (เช่นคุณสมบัติ Galaxy at War ของ Mass Effect 3)

เกมตัวอย่างที่ได้รับความนิยมโดยใช้ HTTPS สำหรับการพิสูจน์ตัวตนคือ Minecraft

การรับรองความถูกต้องของเว็บของบุคคลที่สามพร้อม Native Client Games

เป็นไปได้ที่จะใช้บริการของบุคคลที่สามเช่น Facebook Connect หรือ Google กับลูกค้าพื้นเมือง ตัวอย่างเช่น Facebook มี SDK ท้องถิ่นสำหรับ iOS และ Android เช่นเดียวกับ Google บริการบางอย่างก็มี SDK ดั้งเดิมสำหรับไคลเอ็นต์พีซีแบบดั้งเดิม

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

คุณยังสามารถใช้เบราว์เซอร์ภายนอก มีสองสามวิธีในการดึงสิ่งนี้ออก บางคนต้องการการบูรณาการระบบปฏิบัติการมากกว่าคนอื่นเล็กน้อย บางคนต้องการให้คุณใช้บริการเว็บภายนอกควบคู่ไปกับ (หรืออย่างน้อยก็เข้าถึงได้) เซิร์ฟเวอร์เกมหลักของคุณ โปรดทราบว่าเนื่องจากโดยทั่วไป Facebook และ Google ต้องการ URL ที่รับรองความถูกต้องคุณจะต้องมีหน้า Landing Page ของเว็บไซต์สาธารณะเพื่อใช้โปรโตคอลเหล่านี้ใน (เกือบ) ทุกกรณี

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

จากนั้นไคลเอ็นต์จะเปิดเบราว์เซอร์ภายนอกที่ชี้ไปที่ URL การเข้าสู่ระบบของโดเมนเกมของคุณผ่านโทเค็นเซสชันนี้เป็นพารามิเตอร์ใน URL จากนั้นเว็บไซต์จะเข้าสู่การจับมือกันตามปกติสำหรับ Facebook / Google

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

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

วิธีการรับรองความถูกต้องนี้พบได้ใน MMO ขนาดเล็กถึงขนาดกลาง

โปรดทราบว่าทั้งหมดนี้ใช้สำหรับการร้องขอการชำระเงินผ่านบริการภายนอกเช่น PayPal, Amazon Payments, Google Wallet และอื่น ๆ

การเชื่อมต่อ TLS โดยตรง

ไม่ยากเกินไปที่จะเริ่มต้นเซสชัน TLS ผ่านโปรโตคอลสตรีมแบบกำหนดเอง ไลบรารี่เช่น OpenSSL, GnuTLS, NSS และไลบรารี่เฉพาะ OS ต่าง ๆ จะมี API wrapper ของสตรีมที่เลเยอร์เหนือการขนส่ง / โปรโตคอลระดับต่ำ โดยทั่วไปคุณเพียงแค่ต้องป้อนข้อมูลไบต์ผ่าน API ตัวตัดคำและจัดการกับ handshake และการเข้ารหัส

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

ขอแนะนำให้คุณต้องการใบรับรองที่ถูกต้องเสมอ การอนุญาต certs ที่ไม่ถูกต้องจะไม่อนุญาตให้ผู้โจมตีที่เป็นเพียงการแอบฟังเพื่อขโมยรหัสผ่าน แต่จะยังอนุญาตให้มีการโจมตีจากคนกลาง

วิธีการนี้ต้องการอย่างน้อยที่สุดในแง่ของการพึ่งพาภายนอกในขณะที่ยังคงให้ความปลอดภัยสูงสุด

ตัวอย่างของเกมที่ใช้สิ่งนี้รวมถึง MMO แบบดั้งเดิมที่มีขนาดใหญ่ที่สุด

เกมดั้งเดิมปลอดภัย (ish)

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

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

มีรูปแบบการเข้าสู่ระบบขั้นพื้นฐานที่ปรับปรุงแล้ว พื้นฐานที่สุด - แม้ว่ายังไม่ปลอดภัยอย่างยิ่ง - สำหรับเซิร์ฟเวอร์ที่จะส่งรหัสแฮชเกลือที่มีค่า nonce ระหว่างการล็อกอิน สิ่งนี้ช่วยให้เซิร์ฟเวอร์จัดเก็บรหัสผ่านที่แฮช (และเค็ม) อย่างปลอดภัยในขณะที่อนุญาตให้ไคลเอ็นต์สร้างแฮชเดียวกันในระหว่างการเข้าสู่ระบบ วิธีนี้จะทำให้ผู้โจมตีได้รับเกลือสำหรับรหัสผ่านของผู้ใช้โดยเฉพาะ แต่สิ่งนี้ไม่เป็นประโยชน์อย่างยิ่งหากไม่ได้รับรหัสผ่านแบบแฮชดั้งเดิม (ซึ่งไม่ได้ส่งผ่านสายระหว่างการเข้าสู่ระบบ) ในระหว่างการสร้าง / อัปเดตรหัสผ่านไคลเอนต์จะส่งรหัสผ่านที่แฮชทั้งหมด (ด้วยเกลือ) ซึ่งผู้โจมตีสามารถดมกลิ่น หากฟังก์ชันแฮชที่ใช้มีความแข็งแรงเพียงพอ (เช่น sha-2/512) การบังคับใช้เดรัจฉานบริสุทธิ์นั้นเป็นไปไม่ได้ แม้ว่าผู้โจมตียังสามารถบังคับรหัสผ่านที่อ่อนแอได้อย่างง่ายดาย (ซึ่งเป็นเหตุผลว่าทำไมการบังคับใช้ความยาวรหัสผ่านขั้นต่ำการกระจายตัวอักษร / ตัวเลข / สัญลักษณ์อย่างน้อยที่สุดและการเปรียบเทียบกับพจนานุกรมของรหัสผ่านที่รู้จัก / ชัดเจน / อ่อนแอนั้นสำคัญ) ความจริงที่ว่าผู้โจมตียังสามารถรับรหัสผ่านที่ถูกแฮชได้นั้นเป็นเหตุผลว่าทำไมจึงปลอดภัยกว่าที่จะทำการแลกเปลี่ยนรหัสผ่านทั้งหมดผ่านช่องทางที่ปลอดภัยและเข้ารหัส

ห้องสมุดเครือข่ายเกมยอดนิยมจำนวนหนึ่งใช้รูปแบบเสริมของโปรโตคอลนี้ ฉันเชื่อว่า SmartFox เป็นตัวอย่างหนึ่งถึงแม้ว่าฉันจะไม่ได้มองลึก (โดยทั่วไปฉันไม่สนใจระบบการตรวจสอบไลบรารี่ใด ๆ และใช้วิธีการ HTTPS เนื่องจากมันง่ายที่จะติดตั้งและแข็งแรงกว่า) เกมอินเทอร์เน็ตที่ไม่ใช่เว็บจำนวนหนึ่งใช้วิธีนี้โดยเฉพาะก่อน Steam, XBL และอื่น ๆ

เกมดั้งเดิมที่ไม่ปลอดภัย

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

อย่าทำอย่างนี้ มันไร้ความรับผิดชอบและขี้เกียจ ความไร้เดียงสาของอินเทอร์เน็ตในปี 1990 ที่นิยมวิธีการเข้าสู่ระบบเหล่านี้ไม่ใช่ข้อแก้ตัว

pre-Facebook Flash และเกมบนเว็บจำนวนมากก่อนหน้านี้ใช้แนวทางนี้ ฉันไม่รู้ตัวอย่างเฉพาะจากส่วนบนของหัว ฉันอยากจะเชื่อว่าพวกเขาตายไปหมดแล้ว แต่โลกไม่โชคดีขนาดนั้น

ไม่มีการรับรองความถูกต้อง

เกมส่วนใหญ่ไม่รับรองความถูกต้อง ผู้เล่นเชื่อมต่อส่งผ่านจุดจับเพื่อระบุตัวตนและเริ่มการแข่งขัน ไม่มีเซิร์ฟเวอร์ส่วนกลางที่พยายามตรวจสอบว่ามีเพียงมนุษย์แท้เพียงคนเดียวที่ได้รับอนุญาตให้อ้างว่าเป็น "CaptainMisterDude" เซิร์ฟเวอร์ในพื้นที่เพียงแค่รับรองว่ามีผู้เล่นที่เชื่อมต่ออยู่ในปัจจุบันเพียงคนเดียวเท่านั้นที่มีด้ามจับพิเศษ เซิร์ฟเวอร์ในพื้นที่ใช้การขึ้นบัญชีดำและรายชื่อ IP สำหรับผู้สร้างปัญหา นี่เป็นเรื่องธรรมดาสำหรับเกมสไตล์ Deathmatch ของ FPS แม้กระทั่งทุกวันนี้

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

Quake เป็นตัวอย่างของเกมที่ใช้วิธีการพิสูจน์ตัวตนผู้ใช้


1
ทำไมคุณถึงเขียน HTTPS มากขึ้น? HTTP ไม่เหมาะอย่างยิ่งสำหรับโปรโตคอลการเล่นเกม โปรโตคอลไบนารีที่สร้างขึ้นตามวัตถุประสงค์ในอุโมงค์ TLS ควรเป็นวิธีที่จะไป
aaaaaaaaaaaa

10
สำหรับการเข้าสู่ระบบ? มันเหมาะอย่างยิ่ง คุณไม่ได้เข้าสู่ระบบ 30 ครั้ง / วินาที คุณเข้าสู่ระบบหนึ่งครั้งเมื่อคุณเริ่มไคลเอนต์จากนั้นคุณทำเสร็จแล้ว การเข้าสู่ระบบ HTTPS จะส่งคืนคุกกี้ซึ่งโปรโตคอลไบนารีที่สร้างขึ้นมาเพื่อใช้ในการตรวจสอบการเชื่อมต่อโดยไม่ต้องใช้รหัสผ่านเอง
Sean Middleditch

1
เพียงเพราะมันไม่ใช่ปัญหาด้านประสิทธิภาพไม่ได้หมายความว่าไม่ใช่วิธีการที่ป่องที่เพิ่มความซับซ้อนที่ไม่จำเป็น
aaaaaaaaaaaa

4
ฉันจะใช้คำเดียวกันนี้เพื่ออธิบายวิธีการที่คุณเสนอ ให้แต่ละคนของเขาเอง :)
ฌอน Middleditch

2
ดังนั้นคุณจะรวมไลบรารี HTTP ทั้งหมดเพื่อส่ง 2 สายทางเดียวและรับกลับ 1 หรือคุณจะใช้ส่วนย่อย HTTP ที่จำเป็นด้วยตัวคุณเองรวมถึงการจัดการลำดับหนี?
aaaaaaaaaaaa

3

SSL จะช่วยให้ลูกค้าสามารถระบุเซิร์ฟเวอร์ที่ถูกกฎหมาย, เทียบกับเซิร์ฟเวอร์ "ปลอม" โดยใช้ใบรับรองเซิร์ฟเวอร์ที่ลงนามโดย CA ที่รู้จัก ฉันสงสัยอย่างยิ่งว่าเกมส่วนใหญ่ไม่สนใจที่จะทำเช่นนี้

อย่างไรก็ตามมีเหตุผลที่ดีว่าทำไมพวกเขาอาจต้องการ กลไกการหลีกเลี่ยง / การโกงสิทธิการใช้งานบางอย่างอาจใช้งานได้โดยใช้เซิร์ฟเวอร์ rogue หรือเซิร์ฟเวอร์ "man in the middle"

ฉันคาดหวังว่าเครือข่ายผู้เล่นหลายคนที่สำคัญเช่น Steam และ Microsoft จะมีการป้องกันในตัว

เกมบนเว็บสามารถใช้ HTTPS ได้ แต่ฉันไม่รู้ว่าเหมาะกับ Websockets หรือไม่ (Google ควรตอบคำถามเล็กน้อย)

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