CUBRID의 계정의 길이는 여러가지 이유로 32byte가 max인 것으로 알고 있습니다.
그치만 사용자 생성 시 그 길이를 넘어도 오류를 내거나 하지 않습니다.
사실, 로그인 시에 31byte까지 인식을 하는 것으로 보여지기에, 사용자 생성을 할 때 같은 이름으로 31byte까지 동일한 유저와 33byte로 유저가 생성이 된다면 매니저에서는 동일한 계정인 것으로 인식하고 유저가 생성됩니다.
위와 같은 일로 큰 문제가 발생 할 소지는 없다고 여겨집니다만, 다음과 같은 곤란한 상황이 생길 수도 있겠지요..
A유저명 : cubrid_personal_user_account001
B유저명 : cubrid_personal_user_account001_mb01
C유저명 : cubrid_personal_user_account001_mb02
상황을 가정 해 보도록 하겠습니다.
상황 1
B 유저를 혼자 생성합니다. 다른 계정은 존재하지 않습니다. B유저의 이름은 32바이트를 넘습니다.
문제
B 유저가 로그인을 하면 에러 메시지를 보이지만 접속이 됩니다! 문제는 대부분의 정보를 볼 수는 있지만 스키마 등이나 쿼리 에디터를 실행할 때 뷰를 생성할 수 없다던지 하는 에러메시지를 보이면서 문제가 발생합니다.
(로그인이 되는 문제는 실제 접속 시에는 보낸 데이터와 서버에 존재하는 유저명이 동일하기 때문인 것으로 판단됩니다)
상황 2
위에 보이는 A, B, C 유저 모두를 생성하였습니다. 이 때 B 유저나 C 유저가 로그인을 합니다.
B 유저와 C 유저는 모두 32바이트를 넘깁니다.
문제
B와 C 유저는 모두 로그인에서 부터 스키마 뷰, 쿼리 에디터 등 모든 것에 문제 없이 사용하게 됩니다. 대신 B와 C 유저는 실제적으로는 존재하지만 //매니저에서 사용할 때에는 A 유저의 계정을 사용하게 됩니다//. Manager에서도 분명 계정이 존재하고 서버 상에서도 A, B, C유저 모두 존재하는 것으로 나옵니다. (JDBC를 사용한 로그인 시에는 32byte Max로 유저명을 전송하게 되어 있는 것으로 알고 있습니다만, 매니저에서 로그인 할 때에는 전송에는 제한이 없는 듯 합니다)
================
뭐, 간단하게 매니저에서 32byte를 넘지 못하도록 UI를 수정하는 등의 문제로 기본적인 문제는 해결 될 수 있겠으나, 서버에서는 이미 32byte 이상의 사용자 계정을 생성 해 낸다는게 큰 문제점으로 작용할 수도 있을 것 같습니다. 악용의 소지가 있을수도 있으니까요..
음.. 별 문제가 아닌 것을 장황하게 써 놓아 죄송합니다. ^^
아 참, 별도 질문입니다만, Password를 8byte로 제한을 한 이유가 있나요? 패스워드는 더 길게 생성할 수도 있을 듯 한데요..
Hopi
|