이번 시간에는 인증과 인가에 대해서 알아봅시다. 아마 http를 공부하시다 보면 한 번 쯤은 들어보셨으리라 생각합니다. 401과 403, 그리고 404가 이것과 연관이 있습니다만, 이 글에서 상태코드를 중요하게 다루지는 않을 겁니다.
티스토리 포럼에 가 보시면, 댓글을 입력하는 란이 있음을 알 수 있어요.
최대 500자까지 입력이 가능해 보이는군요. 입력하려는 순간 로그인을 하라고 뜹니다.
이는 제가 로그인을 하지 않아서, 서버는 내가 누구인지 모르기 때문입니다. 처음 보는 사람이 누구인지 모르는 것처럼요. 로그인을 해 보겠습니다.
로그인을 하고 나서 보니, 코딩강아지라는 것이 확인 되었습니다. 신원이 확인이 된 셈입니다. ip 주소를 알면 되지 않을까요? pc방이라는 반례가 있습니다.
그 후에는, 이렇게 포럼에 댓글을 달 수 있습니다. 여기까지 내용을 요약해 봅시다. 포럼에 댓글을 달려고 했어요. 그런데, 서버는 내가 누군지를 몰랐습니다. 그래서 누구인지 확인을 해 달라고 요청했습니다. 제가 로그인을 한 후에는 코딩강아지임이 확인이 되었으니, 댓글을 쓸 수 있었습니다.
쉽게 말해서, 신분증을 보여줬다고 생각하시면 됩니다.
문제는 인가인데요. 보통 이것과 권한을 묶어서 생각하시면 쉽습니다. 뭔가 와닿지 않는데요. 예를 하나 들어보겠습니다.
블로그의 관리자 페이지를 보시면, 이렇게 글들을 수정, 삭제할 수 있는 버튼이 있음을 알 수 있어요. 이 글들을 저는 자원 이라고 표시하겠습니다. 블로그에서는 매우 중요한 것이기 때문입니다.
이것들은 추가, 조회, 수정, 삭제가 될 수 있을 겁니다. CRUD라고 줄여서 말합니다. 이 중에, 조회는 상식적으로 별 문제가 되지 않습니다. 비공개 글이 아닌 이상은 로그인을 하지 않아도 볼 수 있습니다.
위 그림은, 제가 몇 일 전에 썼던 파이썬의 deque 글을 비로그인 상태로 볼 수 있다는 것을 보여드리기 위해서 찍은 것입니다. 문제는 변경이 일어나는 경우입니다.
위 그림은 제 블로그에 포스트 하나가 추가가 된 것을 의미합니다. 이 연산을 제가 했다면 별 문제가 없을 겁니다. 내가 아닌 인증이 된 '내가 아닌 사람'이 하는 경우에 문제가 생길 수 있습니다. 내 자원을 내가 아닌 다른 사람이 함부로 건드린 셈이 되기 때문입니다. 악의적인 마음을 먹고, 몇 개를 수정했다거나, 삭제를 했다면 끔찍할 겁니다.
그 끔찍한 상황을 막으려면 어떻게 하면 좋을까요? 내 블로그에 있는 포스트에 대해서, 쓰기 권한을 chogahui에게만 주면 됩니다.
그러면, chogahui가 아닌 example로 로그인 하였을 때, 제 포스팅을 수정하지 못하게 됩니다. 왜냐하면, example에게 제 포스팅에 대한 쓰기 권한이 없기 때문입니다. 읽기 권한만 있기 때문입니다. 마찬가지 이유로, 제가 다른 블로그의 admin 페이지에 들어가지 못하는데요. 인증이 코딩강아지로 되어 있긴 하지만, 다른 블로그의 admin 권한이 없기 때문입니다.
'네트워크' 카테고리의 다른 글
http와 https가 어떤 차이가 있는지 간단하게 실습해 봅시다. (2) | 2021.08.18 |
---|---|
path traversal 공격 : 사용자의 입력을 믿으면 어떻게 될까요? (2) | 2021.04.21 |
ip 주소의 netmask는 무엇일까요? (0) | 2020.06.21 |
telnet과 ssh가 어떻게 패킷을 날리는지 간단하게 실습해 봅시다. (6) | 2020.06.15 |
많이 언급되는 rsa 알고리즘을 알아봅시다. (2) | 2020.04.25 |
최근댓글