แม้ว่าคำตอบของ Philipp จะดีอย่างสมบูรณ์ แต่ก็มีวิธีที่แตกต่างกันเล็กน้อยที่ไม่ต้องการการเชื่อมต่อระหว่างเซิร์ฟเวอร์ล็อกอินและเซิร์ฟเวอร์เกมซึ่งมีประโยชน์หากการเชื่อมต่อดังกล่าวยาก
- เมื่อผู้ใช้รับรองความถูกต้องบนเซิร์ฟเวอร์การเข้าสู่ระบบพวกเขาจะถูกส่งที่อยู่เซิร์ฟเวอร์เกมและโทเค็นการเข้าสู่ระบบดังกล่าวข้างต้น อย่างไรก็ตามโทเค็นนี้ประกอบด้วย 2 ส่วนคือเวลาบนเซิร์ฟเวอร์การเข้าสู่ระบบและการแฮชของจำนวนนั้นรวมถึงชื่อผู้ใช้ที่อยู่ IP ที่อยู่ IP หรือ ID ของเซิร์ฟเวอร์เกมและรหัสลับที่มีเพียงคุณเท่านั้นที่รู้
- ลูกค้าพยายามเข้าสู่เซิร์ฟเวอร์เกมที่ให้มาโดยส่งโทเค็นนี้ เซิร์ฟเวอร์จะทำการแฮชแบบเดียวกับก่อนโดยอิงจากข้อมูลในโทเค็นการเข้าสู่ระบบรวมถึงที่อยู่ IP / ID และรหัสลับของตัวเอง หากแฮชนี้ตรงกับโทเค็นคุณจะรู้ว่าผู้เล่นรับรองความถูกต้องแล้ว จากนั้นตรวจสอบวันที่ว่าไม่เก่าเกินไป (เช่นมากกว่า 1 นาที)
งานนี้เพราะ:
- ไม่สามารถคัดลอกและนำมาใช้ใหม่ได้เนื่องจากวันที่จะหมดอายุ
- ไม่สามารถสร้างได้หากไม่มีการลงชื่อเข้าใช้ครั้งใหม่โดยไม่ทราบรหัสลับ
- บุคคลอื่น (เช่นด้วยแพ็คเก็ตดมกลิ่น) ไม่สามารถถูกขัดขวางได้ง่ายและใช้เพราะที่อยู่ IP ดั้งเดิมนั้นถูกใช้เพื่อสร้าง
- ไม่สามารถใช้สำหรับบัญชีอื่นได้เนื่องจากชื่อผู้ใช้เป็นส่วนหนึ่งของแฮช
- ไม่สามารถใช้สำหรับการเข้าสู่ระบบพร้อมกันบนเซิร์ฟเวอร์เกมที่แตกต่างกันเนื่องจากที่อยู่ ID / IP ของเซิร์ฟเวอร์เป็นส่วนหนึ่งของแฮช
หรือเพื่อให้ง่ายขึ้นแฮชรับประกันว่าแทบจะเป็นไปไม่ได้ที่ผู้ส่งจะปลอมแปลงโทเค็นการเข้าสู่ระบบและข้อมูลในโทเค็นนั้นจะเชื่อถือได้
เช่นเดียวกับการรักษาความปลอดภัยที่เน้นการใช้ hash ฟังก์ชั่นที่ดีที่สุดที่คุณจะได้รับ - ในขณะที่ผู้คนดูเหมือนจะชอบ bcrypt, PBKDF2 และ scrypt - และตรวจสอบให้แน่ใจว่าคีย์ลับของคุณยาวมาก