보안 (Devlog 16일차)

EenSung Kim·2021년 8월 17일
0

"서버가 감당 가능한 영역의 기준은 어디에 있을까..?"


보안 관련 이슈

끝났다고 생각했던 서버 게시물 파트를 다시 점검했습니다. 팀원 한 분이 로그인 없이도 Postman 을 이용해 게시물을 삭제할 수 있더라며 의견을 전달해주었기 때문입니다.

Postman 을 활용해 게시물을 삭제할 수 있다는 점을 알고 있었던 것은 아니지만, 코드를 짜면서 회원 인증 여부를 무시하고 지나쳤었던 건 사실입니다. 게시물을 작성하기 위해 클라이언트에서 회원 여부를 검증하기 때문에, 굳이 서버에서 검증을 재차 진행할 필요가 없다고 생각했었거든요.

하지만 우회해서 타인의 게시물을 삭제할 수 있다는 것을 알게된 이상 코드를 개선해야만 했습니다. 이 편이 회원들의 정보(회원이 작성한 게시물 등)를 보다 안전하게 지킬 수 있는 방법이니까요. 애초에 인증 여부를 확인했었어야 한다는 생각이 들었습니다.

그런데 한편으로 굳이 이 작업이 필요한가 싶은 의문도 들었습니다. 작업을 하다 보니 CORS 설정을 통해 다른 오리진의 요청이 차단되지 않을까 싶은 생각을 하게 되었거든요. 이 부분은 아마도 추후에 기회가 생긴다면 좀 더 자세히 알아봐야겠습니다.


성능은??

앞서 클라이언트에서 회원 여부를 검증하기 때문에, 굳이 서버에서 검증을 재차 진행할 필요가 없다고 생각했었다는 말을 했는데요. 사실 당시에 그렇게 생각했던 건 검증 과정을 덜하면 그만큼 서버가 적게 일하는게 아닐까 생각했었기 때문입니다.

DB 를 최대한 적게 가져가자는 피드백을 받고 나서, 서버에서 하는 작업을 최대한 줄여야 한다는 생각을 했었습니다. 지금 이 글을 쓰는 동안 곰곰히 돌아보니 왜 그렇게 판단했을까 싶은 마음입니다. DB 를 적게 가져가는 것과 서버에서 인증 작업을 위한 코드 몇 줄이 추가로 돌아가는 것은 전혀 다른 이야기이니까요.

컴퓨터는 반복 작업에 익숙하지만 추상적인 것들에 대처하지 못합니다. 따라서 가능한 모든 상황에 대처할 수 있게끔 코드를 작성하거나, 아니면 애초에 정해진 상황 이외의 변수를 차단할 수 있도록 코드를 작성해야 하겠죠.

처음 내렸던 결정을 지금 돌이켜보면 티도 안 나는 양의 반복 작업을 줄였을 뿐, 회원이 아닌 사람도 얼마든지 우회해서 게시글을 수정하거나 삭제할 수 있도록 하는 위험한 결정이었습니다. 성능적으로 전혀 고민할 필요가 없었다는 것이죠.

다만 여전히 궁금한 것은 남아있습니다. 프로페셔널한 영역에서는 어떤 기준으로 성능을 판단하는지 입니다. 프로젝트 와중에 이 부분을 알아보기는 힘들겠지만 언젠가 시간을 내어 조금이나마 지식을 쌓을 수 있었으면 합니다.

profile
iOS 개발자로 전직하기 위해 공부 중입니다.

0개의 댓글