는 요청이 어디에서 왔는지 확인할 방법이 없기 때문에이 100 % 안전하게 보호 할 수있는 방법이 없지만,하는 것이 약간 어렵게 만들 수있는 방법이있다 최고 기록을 해킹. 기본적으로 보안을 유지하기는 어렵지만 네트워크 연결을 보는 것보다는 실제 응용 프로그램 바이너리를 파고들 필요가 있습니다.
먼저 앱의 '비밀번호'를 선택하십시오. 점수 만 보내지 말고 점수와 연결된 암호 해시 (예 : SHA-256 등)를 보냅니다. 서버 측에서는 점수와 연결된 암호의 해시를 다시 계산하고 제출 된 해시와 일치하는지 확인합니다. 그렇지 않은 경우 점수 제출을 거부하십시오. 앱이 요청한 사항을 살펴본 결과 점수를 위조 할 수 없으므로 초기 접근 방식보다 다소 안전합니다. 그러나 앱에서 바이너리 코드를 살펴보면 공격자가 비밀번호를 복구하고 점수 제출을 위조 할 수는 있지만 이는 매우 복잡하고 사용자 목적에 충분히 부합 할 수 있습니다.
물론 이것은 점수를 복제 할 수 있다는 것을 배제하지 않습니다 (올바른 해시를 알고 나면 원하는만큼 점수를 제출할 수 있습니다). 이것을 방지하기를 원한다면 점수를 제출하는 것은 서버에서 요청 (임의의) ID 번호, 해시 점수 + ID + 암호, 점수 + 해시를 제출 한 다음 서버가이 해시 값이 올바른지 확인합니다. 서버가 ID 번호를 기억해야하기 때문에 프로그램에 조금 더 관련되어 있습니다. 간단한 해결책은 각 점수를 플레이어 이름과 연결하고 플레이어 당 1 점만 허용하는 것입니다. 그러면 암호 + 이름 + 점수를 해시 할 수 있습니다.
위대한입니다. 당신의 대답은 거래에서 보안을 구현하기위한 참고 자료로 유용 할 것입니다. – kishu27
"당신의 목적에 충분하다"고 말할 때, 온라인 고득점 목록 (예 : Angry Birds)을 가진 대형 앱조차도 유사한 접근법을 수행한다는 것을 의미합니다 이에? 당신이 말했듯이, 더 큰 정도의 모호함을 가지고 있습니까? 좋은 아이디어를 가져 주셔서 감사합니다! – TragedyStruck