2017-04-02 14 views
-1

게임 클라이언트/서버를 쓰고 있습니다. 엔티티와 네트워킹을 다루기 위해 Artemis-odb와 Netty를 사용합니다. 등록 된 각 플레이어는 데이터베이스에서 자동 증가 ID를 할당받습니다. 이 ID는 모든 클라이언트/서버 이벤트와 연관됩니다.게임 클라이언트가 가짜 플레이어 ID를 보내지 못하게하려면 어떻게해야합니까?

나는 클라이언트가 계정 도용을 막기위한 쉬운 ID 스푸핑으로부터 보호하기를 원합니다. 이론적으로 이것을 방지하는 가장 좋은 방법은 무엇입니까?

게임/클라이언트는 UUID를 사용하지 않지만 이것이 최선의 방법 일 수 있습니다.

감사합니다.

+1

플레이어를 식별하는 데 ID 만 사용하면 안됩니까? 옵션이 많이 있습니다. 토큰을 생성하고 플레이어의 IP/MAC 주소를 추적 할 수 있습니다. – UnholySheep

+0

고마워요! 그것들은 제가 생각하지 않은 훌륭한 아이디어입니다. 이 게시물은 저를 투표 한 개인에게 사소한 것처럼 보일 수 있지만 네트워크 프로그래밍에 익숙하지 않으며이 정보는 Netty 설명서에서 논의되지 않았 음을 알고 있습니다. 그것은 나쁘다 나는이 웹 사이트에 모두에 직업 일이고 극단적으로 생각한 질문을 자극 할 것을 요구된다. 나는이 질문이 가치가 없다고 생각하는 사람들이 한때는 초보자 였음을 깨닫기를 바랍니다. 미안하다. 나는 진심으로 당신의 도움에 감사드립니다. 그것은 많은 것을 의미합니다. – unenergizer

답변

1

플레이어 ID는 서버에서 해당 플레이어 (TCP를 사용하는 경우 소켓, UDP 인 경우 IP : PORT 쌍)의 네트워크 연결 컨텍스트와 연결되어야합니다.

서버는 ID가 무엇인지 알아야하기 때문에 클라이언트는 ID를 서버로 다시 보내야합니다. 서버가 들어오는 네트워크 패킷을 플레이어의 컨텍스트와 연관시킬 수있는 한, 스푸핑에 대한 실질적인 위험은 없습니다. 단, UDP를 사용하면 위험이 조금 더 높을 수도 있습니다. 그러나 패킷에 일련 번호를 포함 시키면 실제로 사용하기는 어렵습니다.

실제로 클라이언트 - 서버 프로토콜에서 플레이어 식별자로 전체 UUID를 사용하는 주요 네트워크 게임이 없습니다.

+0

감사합니다. 나는 여전히 배우고 있으며 Netty 설명서에서이 정보를 찾지 못했습니다. 나는 클라이언트를 결코 신뢰하지 않는 것을 알고있다. 그래서 나는 나 자신보다 더 많은 경험을 가진 사람들에게 물어볼 생각이다. 진심으로 감사합니다. – unenergizer