나는 많은 사람들이 (뱀, 자동차 경주, 루 등 같은) 브라우저 기반의 간단한 (SWF 또는 HTML5) 게임을 즐길 수있는 시스템을 구축하고자합니다. 이 게임은 간단하고 서버에 로직을 작성하지 않아도됩니다. 최고 점수를받은 사람이 상을 수상합니다.보안 HTTP 트랜잭션은
이제는 워크 플로우 보안 문제입니다. 내 접근 방식이 틀렸을 수도 있습니다. 어떤 대안을 제안해도 좋습니다.
1. 게임이 시작되면 게임 ID가 생성됩니다.
2. 게임이 끝나면 점수와 게임 ID가 다시 전송됩니다.
문제는 2 단계를 스푸핑 할 수 있다는 것입니다. 어느 누구도 생성 된 게임 ID 및 점수와 비슷한 http 요청을 보낼 수 있습니다. 게임에서 얻은 점수와 직접 전송되지 않은 점수를 어떻게 알 수 있습니까?
점수를 암호화하는 것을 생각했지만 암호화 메커니즘이 자바 스크립트에서 쉽게 복제 될 수 있습니다.
미리 감사드립니다.
편집 1 : 나는 중간 공격 스니퍼, 세션 하이재킹, 사람에 대한 걱정 아닙니다. HTTPS가 모든 것을 처리 할 것입니다. 나는 사용자 자체에 대해 걱정하고있다. 그는 브라우저에서> inspect를 마우스 오른쪽 버튼으로 클릭하고 보낼 요청 헤더를 확인할 수 있습니다. 그는 쉽게 동일한 요청 헤더를 재생할 수 있습니다 (새 탭에서 마우스 오른쪽 버튼을 클릭하여 열어 볼 수 있음)
나는 스니퍼, 세션 하이재킹 또는 중간 공격자에 대해 걱정하지 않습니다. 나는 사용자 자체에 대해 걱정하고있다. 누구든지 요소를 마우스 오른쪽 버튼으로 클릭하고 요청 헤더 (양식 데이터 전송 중)를 확인하고 동일한 요청 헤더를 마우스 오른쪽 버튼으로 클릭하고 새 탭에서 열어 재생할 수 있습니다. 이렇게하면 점수 = 100을 보내는 대신 점수 = 1000을 보낼 수 있습니다. –
HTTPS가 스니퍼 및 MITM을 완화합니다. 사용자가 점수를 제출하고 런타임을 제어하지 않으면, 그것이 바로 그 것이다. 당신이 가장 걱정하는 위협에 대해 선명해야합니다. 어떤 암호를 사용하든 사용자는 자신의 상태를 조작 할 수 있습니다. 데이터를 혼란스럽게하는 일종의 미친 계획에 의해 바를 꼬집는 것만입니다. 당신은 바를 높이기 위해 일을 할 수 있지만, 지금까지 가정이 주어지면 난독 화일뿐입니다. –