UUID 사용 이유 - 인프런 | 질문 & 답변

참고해서 작성하기 😊

문제 상황


<aside> ❓ 졸업작품 프로젝트 개발 시, ID, Password로 로그인을 진행하려고 했습니다. 하지만 요즘엔 ID 대신 Email, Username으로 인증을 진행하는 경우가 많다고 합니다. 그리고 ID Column은 대체키로서 사용된다고 합니다. 왜 이렇게 사용하는지 알아보고, 어떤 타입으로 쓸지 정해보고자 합니다.

</aside>

Postgresql 데이터베이스를 사용하고 있고, 타입이나, 방식은 해당 데이터베이스에 종속되게 작성하겠습니다.

시행착오

ID를 대체키로 사용하는 이유

<aside> ❕ ID를 대체키로서 사용하는 이유는, 보안과 효율성 때문입니다.

</aside>

보안

Email, Username도 기본키로 사용될 수 있지만, 사용하지 않는 이유는 HTTP 통신을 진행하면서 해당 기본키를 이용한 조회가 이루어질 수 있으므로 사용자의 정보가 노출될 수 있습니다. 해당 정보는 사용자의 직접적인 정보에 해당하므로 이러한 노출은 개인정보의 유출로 이루어질 수 있습니다. 그리고 이러한 정보를 통해서 해당 사용자의 다른 정보에도 접근할 수 있습니다.

그리고 Email, Username을 이용한 조회가 이루어져야 하므로 보안의 취약점이 생기고, 또 해당 기본키를 후보키로 사용하는 다른 테이블에서도 Email, Username을 알아낼 수 있습니다.

대체키를 사용하게 되면 대체키를 이용한 통신이 이루어지므로, 해당 대체키를 기본키로 하는 데이터베이스를 제외하고는 대체키의 문자열이 무의미하게 됩니다. 그리고, 여러 테이블에서도 대체키가 들어가므로 직접 데이터베이스의 해당 테이블을 조회하기 전까지는 개인정보를 알아낼 수 없습니다.