inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

클라이언트에 json 같은 데이터파일을 넣어서 써도 보안에 문제가 없나요?

해결된 질문

1041

박정인

작성한 질문수 1

0

안녕하세요? DataManager 들으면서 생각이 난 이슈인데요.

우리 강의에서 json을 Resources 폴더에 넣고

필요할때 Load 해서 사용하는 구조인데요,

 예전에 모바일 게임 에픽세븐에서 해킹툴을 이용하여 클라이언트 정보를 조작하는 일이 있었습니다. 

몬스터의 체력을 1로 만든다던가, 무기의 공격력을 올려서 사용하는 버그성 플레이를 보여준적이 있었는데,

유니티 클라이언트에 이런 무기의 공격력이나 몬스터의 체력을 저장해두고 쓰면, 해킹툴 같은걸 이용한 악성 플레이가 가능하나요?

실무에서도 클라이언트에 아이템정보나 몬스터의 정보를 직접 저장해서 쓰는지 알고싶습니다!

정말 이 부분 궁금했거든요.. ㅠㅠ 

 

C# unity

답변 2

1

Rookiss

일단 질문이 살짝 애매한데 온라인 게임을 말씀하시는건지,
1인 게임을 말씀하시는건지에 따라 대답이 달라집니다.

간단하게 요약하면 데이터를 클라에 저장하는거랑
게임해킹은 아무런 연관성이 없습니다.
그리고 싱글 플레이어 게임 기준으로 말씀드리자면
클라 해킹은 막을 수도 없습니다.
도둑의 집에 아무리 고~급 자물쇠 하나를 걸어둬봤자,
어차피 그 집이 도둑의 집이기 때문에
도둑이 공구를 갖고 와서 자물쇠를 해제하면 그만이기 때문입니다.

말씀하신 종류의 클라해킹은 어려운 기술은 아니고
그냥 클라 코드를 리버싱해서 변조하거나,
메모리 Diff 툴을 사용해서 원하는 값이 저장된 메모리를 찾고
해당 주소값에 있는 내용물을 변조하는 것인데요.
그러면 말씀대로 게임 자체를 조작할 수는 있습니다.

그러나 MMO같은 온라인 게임 기준으로는
어차피 모든 중요한 판정 (ex. 데미지 판정)은 서버에서 이루어지기 때문에
아무리 클라해킹으로 열심히 데이터를 변조해봤자
본인한테 위안만 될 뿐(?), 실질적으로 이득은 보지 못하게 됩니다.
반약 서버한테 거짓말을 한다면 (공격 사거리가 10인데 50 떨어진 애를 공격 요청한다거나)
이를 검증하는 것도 서버의 역할이고
구라가 판명나는대로 해당 클라는 Kick or Ban을 당하게 됩니다.

다만 모바일 게임 중에 클라쪽에서 모든 게임 판정 연산을 다 하고,
결과만 서버에 보고하는 방식의 게임 (ex. 쿠키런 등)이 있는데
이 때는 클라 해킹에 의해 게임을 조작할 수 있고
이건 사실 별다른 해결 방법이 없습니다. (애당초 클라를 믿고 가기로 한 방식이기 때문)
서버에서 너무 시간이 짧게 스테이지를 깼는지 체크한다거나
할 수는 있겠지만 이것도 정확하진 않습니다.

다시 온라인 게임 기준으로 정리 드리자면,
클라쪽 DataManager에 무기 공격력 등을 보여주는 것은
UI에서 수치를 표시하기 위한 용도이지
진짜 데미지 연산을 클라에서 하진 않기 때문에 전혀 상관없습니다.
따라서 실무에서도 당연히 클라 쪽에서도 데이터를  읽어서 사용합니다.
다만 사업적으로 너무 민감한 정보 (ex. 강화 확률이라거나)는 서버쪽 데이터만 넣어놓기는 합니다.

0

박정인

와! 감사합니다 ㅠㅠ 

궁금증이 풀리네요. 

UI 기능 관련 질문이 있습니다!

0

24

2

픽셀 좌표 스크린 좌표

0

26

0

전체적으로 코드 읽는게 굉장히 오래 걸리네요...

0

67

2

카메라 #2 수업 캐릭터 쓰러짐 해결

0

79

1

플레이어 움직임이 끝날때, 기울어짐 현상

0

80

1

Input 적용과 관련하여 질문 있습니다.

0

72

1

디버그 불가.. Unity에 연결 불가

0

76

1

달리기 애니메이션 에러

0

85

2

오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다

0

63

1

GetKey 오류

0

108

2

에셋을 어디에 올려두신지 알 수 있나요?

0

104

1

재귀호출? 오류나는데 왜 이래요 ?

0

167

6

Animation blending 파라미터 계산

0

65

1

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

0

94

3

오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다

0

85

2

질문있습니다

0

142

2

아 이거 소스코드 같은거 없나요?

0

140

3

질문 드립니다. string.IsNullOrEmpty(name)

0

85

2

@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?

0

133

2

유니티6 NavMesh 안되는분들

1

174

1

Unity6 Unity-Chan Material 마젠타 문제 해결법

7

524

1

GetComponent<Poolable> 질문드립니다.

0

99

2

UI 불러오지 못함

0

116

2

UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.

0

152

2