Là kiến ​​thức về các cơ chế hack cần thiết cho MMO?


10

Giả sử tôi đã lên kế hoạch, trong tương lai (không phải bây giờ! Có rất nhiều điều tôi cần tìm hiểu trước) muốn tham gia vào một dự án nhóm sẽ tạo ra một trò chơi trực tuyến nhiều người chơi (mmo), và công việc của tôi sẽ là kết nối mạng phần. Tôi không quen thuộc với lập trình mạng (Tôi đã đọc một cuốn sách rất cơ bản về PHP, MYSQL và tôi đã nhầm lẫn một chút với WAMP ).

Trong quá trình nghiên cứu về PHP và MYSQL, tôi có nên tìm hiểu về hack không? Hack như quét cổng, hack bộ định tuyến, v.v. Trong MMO, mọi người luôn cố gắng gian lận, bot và như vậy, nhưng kịch bản tồi tệ nhất sẽ là có ai đó hack cơ sở dữ liệu. Đây chỉ là quan niệm của tôi về điều này, tôi thực sự không biết. Tuy nhiên, tôi hiểu khá rõ về mạng, như mạng con / cổng / IP (cục bộ / toàn cầu) / v.v.

Theo ý kiến ​​chuyên môn của bạn, (Nếu bạn hiểu chủ đề, hãy soi sáng cho tôi) Tôi có nên tìm hiểu về những điều này để chống lại khả năng điều này xảy ra không?

Ngoài ra, trong số những điều tôi đã đề cập (quét cổng, hack bộ định tuyến) Có điều gì khác liên quan đến hack mà tôi nên xem xét không? Tôi không quá quen thuộc với các khía cạnh độc hại / Bảo mật của Mạng.

Và một lưu ý: Tôi không phải là một đứa trẻ đang cố gắng học cách hack. Tôi chỉ muốn học càng nhiều càng tốt trước khi tôi vào đại học, và tôi thực sự cần biết liệu tôi có cần học cái này hay không.


10
Viết các hệ thống máy chủ back-end có thể mở rộng thành số đủ lớn để được coi là "đồ sộ" là vấn đề lớn hơn nhiều đối với bạn so với hack nếu bạn "không quen với lập trình mạng". Bạn có chắc chắn đang cố gắng tạo MMO chứ không chỉ là một trò chơi nhiều người chơi thông thường?

1
Tôi hiểu rồi; cách diễn đạt câu hỏi của bạn thực sự có vẻ như bạn đang cố gắng làm việc với MMO này ngay bây giờ.

7
Vì vậy, bạn không quen với việc kết nối mạng, bạn dự định thực hiện MMO (đây là điều khó nhất bạn có thể lên kế hoạch) và bạn tự hỏi mình có thực sự cần học cách tự vệ trước tin tặc hay không. Ừm Tất nhiên bạn làm, và bạn biết điều đó. Điểm của câu hỏi đó là gì?
o0 '.

2
có liên quan, gamedev.stackexchange.com/a/21598/6937 Câu trả lời ngắn, nếu bạn đã từng nghe về sự phát triển lặp lại, bạn có thể nhìn vào việc học theo cách tương tự. Bảo mật có xu hướng hoạt động như một phần bổ sung sau khi thực tế. Trước khi tạo một máy chủ MMO an toàn, chỉ cần tạo một máy chủ mmo, Trước khi làm điều đó, hãy đọc câu trả lời cho bài đăng được liên kết
brandon

1
Điều này giống như một đứa trẻ 14 tuổi muốn trở thành tổng thống hỏi chiếc cà vạt phù hợp nhất để mặc với bộ đồ tương lai của mình. Đứa trẻ đó có lẽ sẽ không trở thành tổng thống, và ngay cả khi nó là nó, nó sẽ có nhiều vấn đề quan trọng hơn cà vạt. Bạn có thể sẽ không tạo thành công MMORPG với "dự án nhóm" và nếu bạn gặp vấn đề lớn hơn thế này.
Thomas Bonini

Câu trả lời:


16

Vâng, một người nào đó (trên thực tế, có nhiều người) trong nhóm phát triển bất kỳ trò chơi nhiều người chơi nào, bất kể quy mô, nên có kiến ​​thức làm việc mạnh mẽ về các khái niệm bảo mật mạng ở cả cấp độ phần cứng và phần mềm.

Điều này đặc biệt đúng đối với các trò chơi sẽ có rất nhiều sự kiên trì của cơ quan, vì điều đó cấu thành đầu tư từ phía người chơi và do đó là một mục tiêu tạo ra mục tiêu sinh lợi cho tin tặc.

Tham gia các lớp học về mạng / bảo mật mạng / bảo mật chung (crytography, et cetera) trong trường đại học sẽ hữu ích trong việc cung cấp cho bạn một số kiến ​​thức nền tảng cần thiết để trở thành một trong những nhà phát triển nói trên.


11

Biết một cái gì đó về bảo mật là một ý tưởng tốt trước khi thử viết một trò chơi nhiều người chơi, nhưng những thứ như quét cổng và hack bộ định tuyến, hoặc thậm chí là mật mã, không phải là điều bạn nên xem xét trong giai đoạn này.

Thay vào đó, những điều bạn nên tìm hiểu là sự tin tưởng , xác nhậnmạnh mẽ . Biết một chút về tâm lý, đặc biệt là về thử thách và phần thưởng, cũng không phải là điều xấu. Tôi thực sự không thể dạy bạn nhiều điều trong một câu trả lời ngắn như thế này, nhưng đây là một số mẹo giúp bạn bắt đầu với lập trình an toàn:

  • Đối xử với bất kỳ đầu vào từ bên ngoài kiểm soát trực tiếp của bạn như thể nó không phải là những gì bạn mong đợi. Điều đó bao gồm tất cả đầu vào của người dùng, mọi thứ bạn nhận được qua mạng và thậm chí mọi thứ từ các phần khác của cơ sở mã của bạn. Cố gắng suy nghĩ về việc không nghĩ về những gì đầu vào nên chứa, hoặc thậm chí về những gì kẻ tấn công có thể cung cấp cho bạn thay vào đó, nhưng chỉ đơn giản là về những gì đầu vào thể có và cách xử lý an toàn bất kỳ đầu vào nào bạn có thể nhận được.

  • Vì bạn đề cập đến PHP và MySQL, hãy bắt đầu bằng cách xem SQLcác cuộc tấn công kịch bản chéo trang . Nếu bạn cũng quen thuộc với các ngôn ngữ cấp thấp như C, hãy xem xét các cuộc tấn công tràn bộ đệm . Đừng chỉ nghĩ về cách ngăn chặn chúng - hãy nghĩ về cách bạn viết mã của mình để những lỗi như thế đơn giản không thể xảy ra, cho dù là do tai nạn hay do ác ý. Ngôn ngữ lập trình của bạn gần như chắc chắn có các công cụ để cho phép bạn làm điều đó, nếu bạn chỉ học cách sử dụng chúng như ý muốn.

  • Trong trò chơi nhiều người chơi, có lẽ bạn sẽ có một số mã máy khách đang chạy trên máy tính của người chơi. Làm quen với ý tưởng rằng một người dùng đủ thông minh và quyết đoán sẽ luôn có thể thỏa hiệp mã đó và làm cho nó làm những gì họ muốn. Đừng tin tưởng khách hàng , nếu bạn có thể tránh nó. Nếu bạn không thể tránh nó, hãy đảm bảo chỉ tin tưởng nó xa như bạn phải làm.

  • Cố gắng không để tất cả trứng của bạn vào một giỏ. Nếu bạn không thể chạy trò chơi, trang web và cơ sở dữ liệu của mình trên các máy chủ riêng biệt, ít nhất là chạy chúng trong các tài khoản riêng biệt và đảm bảo không ai trong số họ có quyền truy cập lẫn nhau nhiều hơn họ cần. OK, có thể cả trò chơi và trang web của bạn đều cần quyền truy cập vào cơ sở dữ liệu người dùng của bạn, nhưng họ chắc chắn không cần quản trị viên truy cập vào nó, phải không? Có lẽ họ thậm chí không cần nhiều hơn chỉ đọc truy cập vào nó. Ít nhất, ngay cả khi bạn không thực thi việc ngăn cách nghiêm ngặt như vậy để bắt đầu, hãy thiết kế trò chơi của bạn để có thể đưa nó vào vị trí sau - đừng làm cho máy chủ trò chơi của bạn yêu cầu quản trị viên truy cập vào cơ sở dữ liệu. Hãy nhớ rằng tất cả các phần mềm đều có lỗi và sớm hay muộn sẽ có người tìm một lỗ hổng bảo mật trong bạn

Nói chung, điều cần nhận ra về bảo mật là đó là một suy nghĩ . Đó không phải là về việc biết các từ thông tin bảo mật mới nhất, hoặc về cách các cuộc tấn công mới nhất hoạt động hoặc về việc cố gắng dự đoán những gì tin tặc sẽ làm trước khi chúng thực hiện (mặc dù tất cả những điều đó có thể được sử dụng).

Lập trình an toàn thực tế là học cách sử dụng các công cụ mà bạn sử dụng theo cách chúng được sử dụng, về việc chia mã của bạn thành các phần nhỏ đủ để bạn có thể hiểu từng công cụ đó làm gì (và đảm bảo rằng chúng làm đúng, ngay cả khi các phần khác bị xâm phạm) và về việc viết mã của bạn để mong đợi điều bất ngờ. Nếu bạn làm tất cả những điều đó, bạn sẽ không cần biết tin tặc có thể thử gì, bởi vì bạn sẽ sẵn sàng cho mọi thứ.


8

Cá nhân, tôi sẽ không phải lo lắng về việc các hacker chưa .

Lý do rất đơn giản: bạn sẽ không nhận được tin tặc / kẻ gian lận cho đến khi bạn là một trò chơi khá phổ biến; tức là đáng để dành thời gian để hack / gian lận. Đợi cho đến khi bạn có một trò chơi được thiết lập đầu tiên và doanh thu đến để tài trợ cho những thứ đó.

Bạn có thể dành rất nhiều thời gian (ý tôi là rất nhiều) để cố gắng đánh lừa bằng chứng mã của bạn để nó không thể bị hack hoặc bị lừa. Hoặc bạn có thể thực hiện sao lưu ngoại vi thường xuyên (dù sao bạn cũng nên thực hiện) và tạo các điểm khôi phục thường xuyên. Khi một khai thác xảy ra, đóng nó.


1
Mặc dù tôi đồng ý rằng làm một trò chơi tốt nên ưu tiên hơn là tạo một trò chơi an toàn , tôi sẽ nói rằng một mức độ nhận thức nào đó về các vấn đề bảo mật phổ biến và các thực tiễn tốt nhất nói chung là tốt để có ngay từ đầu. Nếu không, bạn có thể thấy mình trong một tình huống không thể kiểm soát nếu và khi trò chơi của bạn diễn ra. Nếu thiết kế ban đầu của bạn về cơ bản không an toàn, cố gắng vá nó sau này có thể giống như chiến đấu với một hydra: mỗi khi bạn đóng một lần khai thác, những kẻ gian lận tìm thấy thêm hai và cách duy nhất để ngăn chặn nó là thiết kế lại và viết lại một phần đáng kể của cơ sở mã của bạn từ đầu.
Ilmari Karonen

1
@IlmariKaronen, tôi đồng ý về khái niệm, nhưng không thực tế. Với bối cảnh của người hỏi, họ cần tập trung vào việc học mạng nói chung. Khi bạn học mạng, bạn có xu hướng tìm hiểu về mật mã. Họ đang ở giai đoạn đầu. Bảo mật chỉ quan trọng khi bạn biết bạn đang làm gì và bạn tạo ra thứ gì đó đáng để bảo mật. Những người hỏi loại câu hỏi này cần đến nơi mà họ thậm chí có thể tạo ra thứ gì đó đáng để bảo mật trước tiên
brandon

1
@IlmariKaronen Tôi hoàn toàn đồng ý: nếu bạn không quan tâm đến bảo mật, bạn sẽ đến Sony. Sony đã sống sót sau thảm họa chỉ vì nó quá lớn, nhưng bất kỳ ai khác cũng có thể đã đi FUBAR.
o0 '.

2
@Lohoris. Tôi sẽ để nó một mình sau này, nhưng đây không phải là sony. Đây là một anh chàng cho biết anh ta hiện đang học những điều cơ bản của mạng. Tìm hiểu bảo mật một khi bạn hiểu những gì bạn đang bảo mật ...
brandon

Có - đây là câu trả lời tốt nhất: nếu trò chơi của bạn trở nên phổ biến rộng rãi và gặp vấn đề về bảo mật, bạn luôn có thể thuê các nhà phát triển bổ sung, v.v. và cấu trúc lại sơ đồ mạng của mình để bảo mật hơn. lo lắng về nó sau
MarkR
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.