클라이언트에서 유니티로 데이터베이스 인서트/업데이트 사용시 코드 변조를 통한 재화량 해킹의 우려가 있어서, 데이터 삽입시에는 뒤끝 평선을 이용하도록 했습니다. 근데 클라이언트에서 코드를 한두글자 변조 하는 것이 아니라, 몇 줄을 추가하는 식의 해킹이 이루어질 경우 클라이언트에서 삽입 함수가 정상 작동하여 해킹이 가능할 것 같아 여쭤봅니다. 특정 테이블은 뒤끝 평선에서만 데이터 삽입이 가능하도록 하는 기능이 있나요? 아니면 굳이 그렇지 않아도 보안상 문제가 없는 것인가요? 설명 부탁드립니다.
안녕하세요 개발자님,
뒤끝펑션은 아래 예시와 같이 데이터를 받고 수정하는 로직이나 예외처리를 통해 삽입되는 로직을 클라이언트 단에서 노출시키지 않을 수 있습니다.
- 영수증 검증 이후 아이템을 지급
- 우편을 받아 데이터에 삽입
- 해당 유저가 삽입 가능할만한 데이터로 삽입할 수 있도록 if문을 걸어놓는 등
클라이언트의 코드가 변조 될 경우, 일반적인 클라이언트에서라면
if문이 수정되어 게임에 영향을 미칠 데이터가 수정되거나 읽기 없이도 수정이 가능하지만,
뒤끝 펑션을 이용한다면
데이터의 읽기 및 수정 로직이 어떻게 작동하는지, if문이 어떻게 처리되어있는지 확인이 불가능하여
클라이언트보다 훨씬 안전하게 이용할 수 있습니다.
데이터를 삽입하는 경우에는 뒤끝 평선을 쓰지만, 데이터를 불러올 때는 클라이언트의 코드로 불러올 생각입니다. 이러면 클라이언트의 코드로 테이블의 이름과 저장 방식이 노출되기 때문에, 해커가 직접 if 문 작성이 가능할 것 같습니다. 평선의 장점을 활용하려면 읽기,쓰기 코드 모두 뒤끝 평선에서 작동해야 하나요?
해당 사항까지 고려한다면 제일 안전한 방법은 읽기,쓰기 코드 모두 뒤끝 평선에서 호출하는 것입니다.
하지만 현재 뒤끝펑션은 BETA로 이용에 제한이 있어 라이브 서비스 시에 모든 DB를 구현하는 것은 어려움이 있을 것으로 보여집니다.
정식 서비스 이전까지는 영수증 검증과 같이 중요한 작업에 사용하는 것을 권장드리며, 클라이언트내에서 보안 에셋 등도 함께 사용해주시면 감사하겠습니다.
뒤끝 평선에서 유저의 재화 데이터와 아이템 데이터만 관리하고
(영수증 검증 처럼 중요하기 때문에) 이외의 유저데이터(아이디,이름,친구,승패관리, 프로필 등)는 클라이언트 뒤끝베이스 코드로
처리할 생각입니다. 이것도 beta서비스에서 이용하기에는 무리일까요?
해당 테이블을 얼마나 사용하는지, 유저가 얼마나 사용하게 될지 예측이 불가하여 파악하기 어렵지만
한달에 50만 이상의 요청이 발생할 확률이 높아 어려울 것으로 예상됩니다.
보다 명쾌한 답변 드리지 못해 죄송합니다.
추가 안내드립니다.
뒤끝펑션은 라이브 전환이 예정되어있습니다.
현재는 수동신청/전환으로 라이브 이용이 가능한 상태로, 자세한 내용은 담당자가 유선으로 연락드려 안내드리겠습니다.
감사합니다.