2009-06-12 11 views
3

저는 자바 스크립트로 타워 방어 게임을 만들고 있으며 높은 점수와 다른 멀티 플레이어 상호 작용을 원합니다. 아마도 두 사람의 플레이어가 동시에 게임을 시작하게하고 다른 사람들이 얼마나 빨리 가고 있는지, 그리고 그런 종류의 것들을 말할 것입니다.Ajax 최고 보안 보안

플래시 게임이 점수 나 이벤트를 보내어 각 클라이언트가 보내는 정보가 실제로 정확하고 믿을 수없는 점수를 보내는 사람이 아닌지 확인하는 방법을 모르겠습니다. 플래시 게임의 점수가 높아지기 시작한 몇 년 전, 비현실적인 (해킹 된) 점수를 보는 것은 매우 일반적이었습니다. 매우 이상합니다. 비밀은 무엇입니까?

답변

2

사람들은 항상 게임에서 속임수를 쓸 수 있습니다 ... 할 수있는 최선은 속이기 어렵게 만드는 것입니다. 점수가 HTTP 요청을 통해 제출되기 때문에 오래된 플래시 게임의 점수는 매우 쉽게 조정할 수있었습니다. 트래픽을 스니핑하면 제출 URL과 점수를 업데이트하기 위해 전달해야하는 변수가 나타납니다. 그 이후로 변경되기를 바랍니다.

내가 당신이라면 점수가 합법적인지를 확인하기 위해 최종 점수와 함께 전달되는 오류 검사 코드를 사용할 것입니다. 오류 검사 코드 알고리즘은 점수로 판단하기가 어려워야합니다 (사람이 스니핑하는 경우). javascript도 임의로 모호해야합니다. 이것은 이상적인 곳이 아니지만 사기꾼의 좋은 부분을 억제해야합니다.

0

요즘은 주로 불명료하지만. 일반적으로 게임마다 고유 한 토큰을 지정하고 스코어와 토큰의 해시를 형성하고 제출 (또는 게임 플레이 전체에 걸친 지속적 제출, 유효성 검사 및 토큰 전환)시 유효성을 검사합니다.

자바 스크립트를 사용하는 것이 더 어려울 것입니다.

2

내가보기에 가장 좋은 방법은 온 전성 검사를하는 것입니다.

경과 된 시간, 적을 죽인 시간 등을 기록하십시오. 데이터로 점수를 확인하고 합산되는지 확인하십시오.

0

일반적으로 가짜 점수 및 진행률 보고서를 방지하는 데 사용되는 다음 도구 조합을 사용하십시오.

  1. 스코어 문자열을 계산하는 논리를 압축하고 obsfucate합니다. 그것을 배포하고 리버스 엔지니어링을 어렵게 만듭니다.
  2. 무작위로 변경되는 키 - 게임이 시작되면 javascript가 높은 점수를 포함하는 문자열을 암호화하는 데 사용할 수있는 키를 요청하게합니다. 서버에는 개인 키가 있어야 메시지를 해독 할 수 있습니다.
  3. 온 전성 검사 - 사용자가 점수를 변경할 수있는 동안 요청에 알려진 범위 인 살인 횟수 등이 포함되도록하십시오. 서버는 해시를 검사하고 데이터가 유효한지 확인합니다.
  4. 혜성 서버 사용 고려 - 두 클라이언트 모두에게 실시간 데이터를 제공하므로 Orbited 또는 Jetty와 같은 혜성 서버를 사용하는 것이 좋습니다. 이렇게하면 서버를 손상시키지 않고 스트리밍 할 수 있습니다.
  5. 실망스럽게 만듭니다. '그런가 말했다.