안녕하세요 선후입니다.
SQLite에 게임 정보를 저장할려고 합니다.
이 때 게임 데이터 수정을 방지하기 할려고 합니다.
(일반 유저는 못하겠지만, 루팅만 하여도 DB파일을 수정할 수 있다고 알고 있습니다.)
방지 방법을 생각중인데
1. 만약 DB를 사용자가 바꾸게 된다면
새로 저장되면서 DB 파일 생성(수정) 시간이 바뀌게 되는지 궁금합니다.
2. 만약에 사용자가 임의로 사용해서 DB파일 생성(수정) 일자가 바뀌게 된다면
어떻게 하면 앱이 알 수있는지 궁금합니다.
DB도 파일인지로 내용이 바뀌면 수정일자가 변경됩니다.
자바의 FIle 클래스를 보시면 있으실 겁니다.
하지만 문제는 DB에 어떤 필드가 수정되었는지를 알 수 없다는겁니다.
지금 만드신 어플은 어쩔수 없지만, 다음부터는 DB 테이블 명과 필드까지 사용자가 알아볼수 없도록
만드셔야 할꺼 같습니다. (대기업에서 보안을 위해 흔히 쓰는 방법입니다)
아니면 어플의 데이타 값을 암호화해서 저장하시는것도 괜찮은 방법이라고 생각합니다.
DB 파일을 수정할려고 해도 암호화되어 저장되어 있으면, 임의로 값을 바꾸는 것이 두려울 테니깐요~ㅎ
나머지는 우디님꼐서 말씀해주신것과 비슷하게 하고 있습니다.
암호화도 했구요
그런데 가만이 생각해보니
HP가 100일때 암호화된 정보를 그대로 적어두었다가
HP가 10일때 저장하고 게임종료 하고 암호화된 HP 100 데이터를 그대로 넣으면
....어차피 HP가 100이 될것 같아서요
파일을 저장할때 DB파일이 수정된 시간을 특정 테이블에 넣어놓고 암호화를 걸어놓으면 (밀리세컨드까지)
DB를 읽을때 시간을 디코딩해서 읽고 현재 DB파일 수정일을
비교해보고 틀리면 에러를 낼려고 생각 중인데
제가 생각하는 방법이 맞는지 모르겠어요 ㅠㅠ.
질문 좀 드릴려고요. 님이 쓰신 글들을 봤는데요
갤럭시 2.2로 테스트 하면 저도 렉이 발생하거든요. 갤럭시 2.1이나 모토로이에서는 문제 없고요.
SurfaceView 사용했고요. 렉걸리는 문제 해결하셨나요? 해결하셨다면 어떻게 해결하셨는지 궁금합니다.
sqlite, soundpool, mediaplayer도 사용했습니다. 근데 쓰나 안 쓰나 관계가 있는지는 모르겠네요