지금까지 우리는 다중 사용자 시스템을 구축하는 방법을 살펴봤습니다. 물러나기에 앞서서 앞으로 여러분이 관심을 가져볼만한 주제를 소개해드리고 저는 물러나겠습니다.
현실에서는 사용자가 입력하는 정보를 신뢰해서는 안됩니다. 이메일, 비밀번호 이러한 정보의 유효성을 반드시 체크해야 합니다. 이렇게 입력한 값의 유효성을 체크하는 행위를 validation이라고 합니다. 키워드 validation 을 통해서 유효성을 체크하는 여러가지 방법을 찾을 수 있을 것입니다. 웹개발을 하는데 있어서 가장 지치고 힘든 것이 바로 이 유효성 체크라고 해도 과언이 아닙니다.
유효성을 체크하는 방법은 두가지 방법이 있습니다. 하나는 웹브라우저 자바스크립트 등을 이용해서 처리하는 것이고, 다른 하나는 서버 쪽에서 처리하는 것입니다. 근본적인 것은 서버 쪽에서 체크하는 것이고, 브라우저에서 처리하는 것은 사용자의 편의성을 높여줍니다. 둘 다 병행해야 하고, 특히 서버쪽 체크는 반드시 해야 합니다.
이 수업을 만들면서 제가 제일 걱정되는 부분이 비밀번호 처리 부분입니다. 사용자의 비밀번호는 시스템 관리자도 원천적으로 볼 수 없도록 암호화해야 합니다. 이를 위해서는 hash, salt, key stretching과 같은 여러 기법이 사용됩니다. 결과적으로 bcrypt, scrypt와 같은 방법을 사용해야 합니다. 이런 수단 없이 사용자의 비밀번호를 입력 받으면 절대, 절대 안됩니다. 비밀번호에 대한 원리를 찾아보세요. 흥미진진합니다.
우리는 이메일을 통해서 인증을 구현하고 있습니다. 그런데 사용자가 정말 그 이메일의 주인이 맞을까요? 이것을 체크하기 위해서는 우선 이메일 인정을 하기 전에는 기능의 사용을 제한 할 필요가 있습니다. 또 랜덤한 비밀문자를 만들어서 이메일을 통해서 전송했다가 그 비밀문자를 시스템에 입력하면 그 때 활성화를 해주면 되겠죠. 이를 위해서는 이메일을 전송하는 방법이 필요하고, 데이터베이스에 사용자가 인증을 했는지 여부를 체크할 필요도 있을 것입니다.
또 사용자의 기밀정보를 보관하는 것은 매우 부담스러운 일입니다. 이런 일을 구글이나 패북 같은 기업에 위임하고, 우리 서비스는 사용자의 식별자만을 유지하는 전략도 최근에는 많이 사용하고 있습니다. 이를 연합이라는 뜻의 federated 식별이라는 뜻의 identity을 붙여서 federated identity 혹은 federeated authentification이라고 하고, 한국에서는 타사 인증이라고 부르기도 합니다. 이런 주제에도 관심을 가져보세요.
이렇게 다중 사용자가 되면 시스템의 복잡도가 기하급수적으로 높아집니다. 다중사용자가 능사는 아닙니다. 다중사용자를 도입하기 전에 그 경제성을 꼼꼼하게 따져보시는 현명함이 필요합니다.
자 여기까지입니다. 다중사용자 시스템이 어떻게 동작하는지 감이 오시나요? 다중사용자 시스템을 통해서 여러분의 애플리케이션은 개인이 사회가 되는 혁명적인 변화를 맞이하게 될 것입니다. 고생하셨습니다. 축하드리고요.
지식지도
관련된 지식의 지도입니다. 지도를 참고해서 스스로 학습 경로를 탐험해보세요.
수업소식
아래 채널에 구독하시면 새로운 온/오프라인 수업이 있을 때 알려드립니다.