TIL 2021/3/17

jimin_lee·2021년 3월 17일
0

Today I Learnt

목록 보기
1/3

What I learnt today is...

✅checkmate 서비스에 회원탈퇴 기능을 추가했다.

새 페이지를 따로 만들기 보다는 프로필 페이지에 버튼 하나만 만들어서 기능을 넣어놓는 게 사용자 입장에서 더 편할 것 같았다. 그래서 회원탈퇴 api를 만든 다음, 탈퇴 버튼에 이벤트를 달아서 ajax로 api에 delete 요청을 보내도록 했다. DB의 모델에 이미 ondelete값을 cascade로 설정해놓아서 번거로운 작업을 따로 할 필요 없이 간단했다.

모달창 디자인은 팀원분께서 알려주신 sweetalert2 라이브러리를 사용했다. 너무 귀엽고 애니메이션도 너무 과하지 않아서 쓸 만 한 것 같다.

처음에는 굳이 탈퇴 기능을 만들 필요가 있나 싶었는데, 일주일 간의 서비스 후 받은 사용자 피드백 중에 개인정보 처리에 관한 내용이 있었다. 개인정보 이용 약관이 없어서 불안하다는 내용이었다. 그래서 개인정보 처리에 관한 방침을 만들었는데, 그러다 보니 회원 정보를 언제까지 가지고 있을 것인가에 대한 이야기가 나오지 않을 수 없었다. 그래서 사용자가 개인정보 이용 동의를 철회하는 시점을 지정할 수 있도록 회원 탈퇴 기능을 추가하게 되었다.

개인정보 이용약관이 없어서 불안하다는 한 마디지만, 많은 생각할 거리를 던져준 피드백이었다. 사람은 누구나 개인정보에 민감하다. 앞으로 서비스의 규모가 더 커진다면 개인정보에 대한 문제는 더욱 중요한 문제가 될 것이다. 그런데 개인정보 처리방침이나 이용약관을 보여주기만 하는 건 사용자를 잠시 안심시킬 수는 있어도, 궁극적인 웹사이트의 보안에 대한 실질적인 대책은 될 수 없다는 생각이 들었다.

그런데 보안이 대체 뭘까? 나는 정말 아무것도 모르는 것 같았다. 그래서 튜터님께 물어보고, 보안의 개념을 설명해주는 강의도 찾아본 결과, 나름대로의 이해를 하게 되었다.

내가 이해한 내용 첫 번째는 일반적으로 보안전문가, 보안팀이라는 용어에서 사용되는 보안이라는 개념은 범위가 엄청나게 넓다는 것이다. 그래서 내가 보안에 대해 어떤 기술적인 부분을 배우고자 한다고 해도 실질적으로 checkmate라는 서비스에 바로 적용하는 것은 매우 어렵고, 지금의 내 능력 밖의 일이며, 또 그 만큼의 기술이 필요하다고 생각되지도 않는다. 그러면 보안이라는 것은 나와는 전혀 관련이 없는 개념이기만 한 것인가, 하면 그건 또 아니다. 오히려 개념적 범위가 넓기 때문에 현재의 내 상황과 서비스도 충분히 그 필요성을 공감하고 얼마든지 적용할 수 있는 부분들이 있다.

보안에 대해 알게 된 내용 두 번째는 보안의 목표에 대한 것이다.
보안의 목표는 일반적으로 세 가지로 나뉜다. 다음은 인프런에서 무료로 제공하는 강의를 듣고 정리한 내용이다.

  1. 기밀성(confidentiality) : 정보의 내용을 허락되지 않은 사람에게 노출되지 않도록 하는 것
  • 목표 : 데이터의 보호
  • 수단 : 암호화
  1. 무결성(Integrity) : 정보의 변경 방지
  • 목표 : 데이터의 내용 보존
  • 수단 : 해쉬 함수, 메세지 다이제스트, MD5, RC4 등의 알고리즘
  1. 가용성(availability) : 디도스 공격, 자연재해 등으로부터 자원을 보호하여 사용자가 원할 때 서비스를 이용할 수 있게 하는 것
  • 목표 : 자원에 대한 접근 및 사용 보장
  • 수단 : 서버의 이중화, 안티 디도스, 클라우드 시스템

여기서 알게 된 것은, 나는 단순히 웹사이트의 보안을 강화하려면 어떻게 해야 할지 고민했었는데, 그보다는 어떻게 데이터의 내용을 보존하고 변경하려는 시도로부터 보호할 수 있을지와 같이 좀 더 고민이 구체적이 될 필요가 있다는 사실이다. 그래서 현재 내 수준에서 어떻게 보안의 목표들을 이뤄낼 수 있을까를 생각해봤고, 일단은 가장 기본적인 것부터 공부해보기로 했다.

바로 지금 http로 서비스하고 있는 것을 https로 바꾸는 것!이다. 지금 나는 요청을 주고받는 방법이라는 것만 알지 http와 https 연결의 차이도 잘 모르기 때문에 우선은 둘의 개념부터 한 번 공부해봐야 할 것 같다. 그런데 TCP는 뭘까 도대체... 네트워크를 잘 모르기 때문에 TCP부터 뭔지 좀 찾아봐야 할 것 같다. 비전공자는 이게 문제다. 뭘 좀 알아보려고 하면 모르는 게 계속 나와서 또 찾아봐야 한다. 마치 영어 단어를 찾으려고 영영사전을 폈는데 단어의 정의 중에 또 모르는 단어가 있어서 끝없이 찾아보는 그런 상황 같다. 그러다 가장 베이스에 있는 단어의 뜻을 알게 되고 타고 타고 가서 처음에 목표했던 단어의 뜻을 알아내는 것만큼 재밌는 일도 없으니까 그걸로 위안 삼자!

profile
Curious Libertine

0개의 댓글