Unity상 클라에서 해당 유저의 스테이지 진행 상황을 SciprableObject로 가지고 있는데, 이걸 10분에 한번씩 Firabase상에 Rank 테이블에 업데이트해주고,
클라에서 랭킹 UI 열면 Rank 테이블 정보 가져와서 랭킹 정렬해서 보여준다면,
클라가 뜯긴다는 의미가 클라에 ScriptableObject 정보를 마음대로 바꿔놓고, 10분에 db에 Update될때 조작된 정보가 Update 될수 있다는건가?
그러면 게임 진행 도중에 사용되는 ScriptableObject를 암호화 처리해서 사용(?)해야 하는건가?
아니면 ScriptableObject말고, 그냥 유저 정보 클래스에 넣고, PlayerPrefabs나 ScriptableObject 같은것에 저장안하고, 메모리상 있는걸 바로 저장하면
문제없는건가?
그동안 보안 관련해서 별 신경안썼더니 개념이 좀 헷갈리네.
암호화하면 해킹을 좀 늦출뿐, 서버에서 게임을 시뮬레이션하는게 아니면 암호화를하든 메모리에잇는걸 바로 올리든 털림
아무리 생각해도 민감한 정보를 스크립터블에 저장해 쓰는건 좋은 방법이 아닌거 같음. 물론 결국엔 털리는게 인디게임의 운명이라지만 메모리를 터는것보단 로컬에 남은 데이터를 터는게 훨씬 쉬우니까. 굳이 쓰겠다면 본인이 말했던대로 암호화를 잘 해야할거임.
서버 검증 없인 안 됨
파이어베이스 쓰면
https://firebase.google.com/docs/app-check?hl=ko
이거 함 봐봐라. 아직 유니티, 언리얼 SDK는 없어서 직접 만들어서 써야함.
https://firebase.google.com/docs/app-check/unity/default-providers?hl=ko#android
유니티도 되네? 저렇게 짧은 코드 넣으면 되는건가?? 상세히 안 봐서 모르것당
이런거 해도 털리긴 하는데 실력자 해커가 아니면 안 털리는거지. 그정도 고수가 인디게임에서 시간내서 털거같진 않고
흠... 내 앱에서 보내는게 아닌 패킷을 복제해서 보낸다던가 할때 그걸 검증하는건가보네? 내 클라이언트의 데이터가 변조되서 날아가면 그걸 처리하는건 아닌것 같긴한데, 정확한 개념은 잘 모르겠네. 언뜻 드는 생각으로는 ScriptableObject 같은 것보다 중요한 데이터는 메모리 상에서 가지고 있다가 백엔드로 보내고, 알려준 앱체크 이거 쓰면 메모리를 해킹해서 조작된 데이터를 별도로 보낸다던가 하는거는 막을수 있는게 아닐까 싶기도 하고..
패킷을 확인하는건지는 모르겠지만 변조된 클라인지 체크하는 거라니깐 가격도 비싼건 아닌거같고.