2013-07-16 5 views
1

오픈 소스 클라이언트와 서버 소프트웨어가 있다고 가정합니다. 둘 다 완전히 오픈 소스입니다.오픈 소스 클라이언트 - 서버 프로젝트에서 수정 된 클라이언트를 dissalow하는 방법?

수정 된 클라이언트가 수정되지 않은 서버에 연결할 수 없도록하려면 어떻게해야합니까? 또는 수정 된 클라이언트를 감지합니까? 예를 들어 오픈 소스 대규모 멀티 플레이어 온라인 게임에서 부정 행위를 방지하려면?

이 주제에 대해서는 아무것도 찾을 수 없으며 빈 Google 검색에 대해 excepf를 찾을 수 있습니다.이 주제에 대한 정보를 어디에서 찾을 지 모르기 때문에 여기에있는 사람이 대답하거나 심지어 올바른 방향으로 나를 가리킬 수도 있습니다. 대답.

+0

부정 행위가 발생하지 않도록하려면 모든 클라이언트가 수정되지 않는 방식으로 서버를 작성해야합니다. –

+1

한 가지 해결책은 실제로 사용자가 A에서 B로 이동하기 위해 취한 시간/경로를 추적하여이를 "현실적인 노력"과 비교하는 것입니다 (예 : 1.2 초 이내에 A에서 B로 이동하는 것이 가능한지 또는 12 초), 그걸 사용하여 위조범을 "거부"하십시오. 이것은 누군가가 소스를 변경하는 것을 막는 것보다 훨씬 더 성취 할 수 있습니다. –

+0

나는 이것이 일종의 법적 문제라고 생각한다. 제 의견으로는 이것은 기술적으로 성취 될 수 없습니다. –

답변

4

이렇게하려면 매우 어렵거나 불가능합니다. 클라이언트에 해시를 전송하고 해시 서버 측을 알려진 수정되지 않은 해시와 비교하는 코드를 클라이언트에 추가 할 수 있지만 숙련 된 프로그래머는 이러한 방법을 사용하여 쉽게 유효한 해시를 위조 할 수 있습니다. 온라인으로 게임을 할 때 클라이언트를 수정해도 이점이 없는지 확인하는 것이 좋습니다.

3

100 % 신뢰할 수 없게 수행 할 수 없습니다. 당신은 적수에 의해 완전히 통제되는 시스템이 결코 신뢰할 수 없게 될 수있는 방법을 생각해 내고 있습니다. 서버가 신뢰하는 클라이언트 프로그램이있는 한, 사람들은 원하는대로하기 위해이를 수정할 수 있습니다.

해결책은 클라이언트를 신뢰하지 않는 것입니다. (게임을 할 때, wallhacks와 같은 것을 방지하기 위해) 필요하지 않은 정보를 제공하지 말고, 서버에 보내는 데이터의 온 전성 검사를 수행하십시오 (해킹을 막기 위해). 또한 사람들이 각 클라이언트의 관점에서 서버 상태와 변경 방법을 볼 수있게하십시오. 이를 통해 서버 관리자 및 다른 플레이어는 목표 로봇과 같은 것을 탐지 할 수 있습니다.