2012-09-19 3 views
5

저는 JavaScript로 게임을 작성하고 있습니다. 가장 큰 문제는 JS에 대한 지식이있는 사람이 누구든지 내 소스 코드를 열 수 있다는 것입니다. 작동 방법을 확인한 다음 game.score = 100000000000000;을 콘솔에 연결하십시오. 그러나 스크립트를 난독 처리하는 것 외에도 익명의 함수로 모든 것을 래핑하는 것이 트릭입니다. 사용자가 코드를 실행하지 못하도록 함

(function() { 
    game_start = function() { 
     //etc 
    } 
    //etc 
})(); 

나는 시도하고 크롬 콘솔에서 코드의 실행

, 그것은 undefined와 함께 제공됩니다. 이것은 바람직한 결과이지만, 내 메소드 주위에 쓸모 없게 만드는 방법이 있습니까? 또는 콘솔에서 실행되는 것을 방지하는 더 나은 방법일까요?

+4

클라이언트 측 코드는 절대로 썩을 수 없도록 만들 수 없습니다. –

+4

그리고 크롬에 ​​중단 점을 추가하고 원하는대로 변경할 수 있습니다. 이것에 많은 노력을 기울이지 마십시오. 따라 잡을 수있는 최선의 방법은 코드를 난독 화/최소화하여 읽는 것이 어렵도록하는 것입니다. uglifyjs와 같은 것을 봐라. –

+0

http://stackoverflow.com/a/11960187/453277를 참조해라. –

답변

4

속임수를 쓰지 않는 방법은 없습니다. 심하게 난독 화 된 코드 (심지어 나는 H5b(b){if(b.pd()&&b.Ca&&b.gKa){var a=b.ra(RT.Nwa)과 같은 것에 대해 이야기하고 있습니다)를 사용하더라도 UI 변경이나 네트워크 요청을보고 거기에서 추적 할 수 있습니다.

어떤 사람들은 AJAX 호출을 사용하여 점수의 유효성을 검사합니다. 점수가 증가/감소 할 때마다 앱은 백 엔드에 AJAX 호출을하고 백엔드에서도 점수를 추적합니다. 사용자가 최종 점수를 제출할 때 백엔드 점수와 대조하여 확인한 후 점수가 다른 경우 해당 사용자가 속임수를 쓰고 있음을 알게됩니다.

그러나이 방법으로 사람들이 아약스 전화를 걸고 그 방법으로 점수를 올리는 스크립트를 작성하는 것을 막을 수는 없습니다.

tl; dr : 아니요, 사용자 측 코드가 손상되지 않도록하는 방법은 없습니다.

+0

흥미로운 솔루션처럼 들립니다. – Polyov

3

죄송합니다. 게임이 컴퓨터에서 실행될 때 사용자가 속임수를 사용하지 못하게 할 방법이 없습니다. 사용자 시스템에서 실행되는 모든 코드는 사용자가 조작 할 수 있습니다. 속임수를 사용하지 못하게하려면 서버에 모든 게임 로직을 구현하고 플레이어가 알지 못하는 정보를 보내지 말고 플레이어가 허용되지 않는 명령을 수락하지 않아야합니다 해야 할 것.

+0

아니면 적어도 게임 로직을 서버 측에서 검증해야합니다. – Brad

+0

부정 행위를 방지하는 것이 불가능하다는 것을 이해합니다. 나는 얼마나 큰 장애물을 만들 수 있는지 궁금합니다. – Polyov

관련 문제