개발/백엔드 설계

스도쿠 정답을 브라우저에 보내면 안 되는 이유

after-crud 2026. 5. 13. 19:16

브라우저로 정답이 전달되면 개발자 도구 등을 통해 쉽게 확인할 수 있습니다.

스도쿠 게임을 만들 때 가장 쉬운 방법은 문제와 정답을 함께 준비해두는 것입니다. 사용자가 숫자를 입력하면, 화면 안에서 정답과 바로 비교하면 됩니다. 맞으면 넘어가고, 틀리면 표시해주면 됩니다. 혼자 즐기는 게임이라면 이런 방식도 크게 문제가 되지 않습니다.

하지만 대부분 스도쿠 게임에는 오늘의 스도쿠와 일일 랭킹 기능이 있습니다. 여러 사람이 같은 퍼즐을 풀고, 누가 더 빠르게 풀었는지 기록으로 비교합니다. 이때부터는 단순히 “게임이 잘 작동하는가”보다 “그 기록을 믿을 수 있는가”가 더 중요해집니다.

여기서 말하는 브라우저는 사용자가 실제로 보는 화면입니다. 스도쿠 판, 숫자 버튼, 타이머, 힌트 버튼처럼 눈에 보이는 부분이 브라우저에서 실행됩니다. 반대로 서버는 사용자 눈에 보이지 않는 뒤쪽 시스템입니다. 퍼즐을 만들고, 정답을 보관하고, 사용자가 제출한 풀이가 맞는지 확인하는 역할을 합니다.

 

문제는 브라우저가 완전히 숨겨진 공간이 아니라는 점입니다. 화면에 정답을 보여주지 않더라도, 정답 데이터가 브라우저로 전달되었다면 사용자는 개발자 도구 같은 방법으로 그 데이터를 확인할 수 있습니다. 쉽게 말해, 택배 상자 안에 정답지를 넣어 보내놓고 “겉으로는 안 보이니까 괜찮다”고 말하는 것과 비슷합니다. 상자를 열어볼 수 있다면 정답은 숨겨진 것이 아닙니다.

 

스도쿠에서는 정답판이 따로 있습니다. 처음 보이는 문제판에는 빈칸이 있지만, 정답판에는 모든 칸이 채워져 있습니다. 이 완성된 정답판을 브라우저에 보내면 사용자는 실제로 퍼즐을 풀지 않고도 정답을 확인할 수 있습니다. 그리고 그 값을 그대로 입력하면 아주 빠른 기록을 만들 수 있습니다.

 

혼자 하는 게임이라면 이것은 개인의 선택일 수 있습니다. 하지만 랭킹이 있는 게임에서는 다릅니다. 누군가는 직접 고민해서 퍼즐을 풀고, 누군가는 정답을 보고 입력한다면 두 기록은 같은 의미를 가질 수 없습니다. 결국 랭킹의 공정성이 흔들리고, 성실하게 플레이한 사용자의 경험도 나빠집니다.

그래서 스도쿠 게임에서는 정답을 브라우저에 보내지 않는 방향이 맞습니다. 사용자가 보는 화면에는 문제판만 전달하고, 완성된 정답판은 서버 안에만 보관합니다. 브라우저는 사용자가 편하게 플레이하도록 돕고, 서버는 나중에 제출된 답이 정말 맞는지 판단합니다.

 

이 구조가 모든 부정행위를 완벽하게 막아주는 것은 아닙니다. 누군가는 외부 도구로 스도쿠를 풀 수도 있고, 반복해서 시도할 수도 있습니다. 하지만 적어도 정답이 게임 화면 뒤에 그대로 숨어 있는 가장 쉬운 문제는 막을 수 있습니다.

 

결국 핵심은 단순합니다. 랭킹이 있는 게임에서는 기록이 믿을 만해야 합니다. 그리고 기록을 믿으려면 정답을 사용자의 브라우저가 아니라 서버에 두어야 합니다.