2010-03-30 3 views
8

자바 스크립트를 사용하는 게임에서 HTML과 CSS를 사용하고 있는데, 게임을 안전하게 할 수있는 방법이 있다면 사용자가 game.php를 호출 할 수 없도록 만드는지 궁금합니다. 결과 = 승리로 게임을 끝내고 벌 수 있습니다. 어떤 점에서.자바 스크립트로 보안 게임을 만드는 방법은 무엇입니까?

지금 현재 나와있는 해결책이 있습니다.

기회 게임에 대한
  • , 이미 자리에 결과 페이지 을 시작 또는 느슨한, 그럼 그냥 보여 일부 애니메이션을이기는하지만, 모든 점수와 승리/느슨한 물건은 이루어집니다 서버 쪽. 전투 게임에 대한

  • , 그냥 자바 스크립트 호출의 조치를 얻고, 는 서버의 oponent의 반응 을 피해 계산을하고 바로 데이터를 다시 보낼 수 있습니다.

마지막 해결책은 사용자가 아무 때나 작업을 보내야 함을 의미합니다. 이 게임은 차례 배틀 게임으로 돌아갈 때 사용할 수 있지만 다른 종류의 게임에서는 속도가 느려질 것이라고 생각합니다. 그래서 내 질문은 정보를 안전하게 보호하기 위해 자바 스크립트를 준비 할 수있는 안전한 방법 일까?

답변

13

모든 계산 및 유효성 검증을 서버 측에서 수행하도록하는 유일한 방법. 그것이 거의 모든 온라인 게임에서 어떻게 이루어 졌는지입니다. 클라이언트는 온라인 통신에서 결코 신뢰할 수 없으므로 사용자가 실제로 무언가를 유효하게하는지 서버 측에서 항상 확인해야합니다. (이론적으로 어쨌든, 실제로는 지연 보상과 클라이언트 측에서 중요하지 않은 부분을 오프로드하기 위해 클라이언트를 다소 신뢰해야합니다.)

이러한 이유로 자바 스크립트는 모든 작업을 서버에서 처리하고 유효성을 검사해야하기 때문에 온라인 게임을 개발하는 데 아주 좋은 언어는 아닙니다. 다른 프로그래밍 언어의 경우 서버 및 클라이언트에 대해 TCP/IP를 사용하여 자체 통신 프로토콜을 구축 할 수 있기 때문에 큰 문제는 아닙니다. 그러나 매우 비효율적 인 라이브 클라이언트 - 서버 통신을 위해 만드는 HTTP 프로토콜과 XMLHTTPRequest 핸들러에 의존해야하기 때문에 javascript에는 이러한 가능성이 없습니다.

당신이 말했듯이, 당신은 항상 자바 스크립트에서 인터페이스를 할 수 있지만, 보안을 위해, 당신은 여전히 ​​서버 측에서 많은 것들을 수행 할 필요가 있으며 이것은 더 많은 행동 지향적 인 제어가 필요한 게임에서는 확실히 작동하지 않습니다.따라서, 보안이 필요한 경우, 당신은 게임 기반으로 전환하는 것이 제한되어 있습니다.

+0

전체 답변을 주셔서 감사합니다 :) 그럼 차례와 기회 게임으로 돌아서라고 생각합니다. – rnaud

1

아니요, 방법이 없습니다.
사용자 작업을 서버에 보내는 것이 잘못된 이유는 무엇입니까?

+1

그럼 난 ') = P2P

그러나, 플래시 게임 데이터 트래픽을 전송하여, 당신은 더 흥미 통신 기능, 예를 들면 일부를 활용할 수 있습니다 모바일 및 낮은 연결에 대해 생각하고, 나는 매 30 초마다 물건을로드하지 않도록하고 싶습니다. – rnaud

2

순진한 사용자를 방해하기 위해 할 수있는 일은 있지만 모두가 아닐 수도 있습니다. 그것은 모두 사람이 당신의 게임을 "공격"하는 동기가 무엇인지에 달려 있습니다. 결국 사용자는 자바 스크립트 디버거를 사용하여 코드가 수행하는 작업을 정확히보고 복제 할 수있었습니다. 모든 게임 동작을 되돌려 보내더라도 사용자는 계속해서 그 동작을 복제 할 수 있습니다. 사용자가 수행 할 수있는 작업에 대해 신중하지 않으면 기본 제어 구성표로 게임을 제어하는 ​​경우 불가능할 수있는 작업을 다시 보낼 수 있습니다.

2

승리를위한 URL이 없어야합니다. 게임 도중 클라이언트는 사용자 액션을 보내야하며, 서버가 승리하면 승리 페이지로 리다이렉트합니다.

승리 페이지에는 계산/보상이 이루어져야합니다.

1

이 옵션을 고려해 주시겠습니까? (답 : 응답)

중요한 변수 저장 공간, 계산기 (예 : 생명 포인트) 및 "커뮤니케이터"로 작동하는 숨겨진 내부 플래시 플레이어로 중요한 항목 (해킹하지 않으려는 물건) 그런 게임 데이터를 위해

JavaScript보다 확실히 안전합니다. 그러나 여전히. 고객 측이 100 % 안전하지 않다고 가정하는 것이 가장 좋습니다. (심지어 C++ 게임, 롤에 : 해커) :

+0

이것은 내가 실제로 생각해 보지 못한 매우 흥미로운 옵션입니다. 나는 정말로 AS 지식이별로 없지만 어떻게 작동 할까? –

+1

@Angelo R.이 링크에는 AS3과 JS를 연결하는 데 대한 자세한 내용이 나와 있습니다. http://www.hardcode.nl/archives_155/article_334-call-javascript-function-from-as-and-viceversa. 짧게 말하면, 양측은 서로 함수 호출을 실행할 수 있습니다. 강제로 중요한 데이터 트래픽이 플래시를 통과하므로 서버가 작동합니다. 플래시를 '데이터 표시'로 자바 스크립트를 사용하여 서버와 동기화되는 '안전한'변수 저장소로 전환 할 수 있습니다. 그러나 : 플래시는 100 % 어리석은 증거는 아니지만 Javascript와 비교할 때 디 컴파일하는 것이 훨씬 더 어렵다는 점에 유의하십시오. – PicoCreator

+0

고마워요. 재미있는 읽을 거리가 될거에요. –

관련 문제