내가 공격자라면?
서비스를 만들다 보면 우리가 가장 먼저 신경 쓰는 건 기능이 잘 동작하는지입니다. 버튼을 누르면 화면이 잘 넘어가는지, 사용자가 원하는 대로 데이터가 저장되는지, 디자인이 깨지지 않는지 같은 것들이죠. 그런데 그렇게 기능에만 집중하다 보면 예외적인 상황이나 예상하지 못한 행동은 놓치기 쉽습니다. 누군가 의도적으로 이상한 방식으로 서비스를 어뷰징하거나, 우리가 공들여 가공한 데이터를 손쉽게 긁어가는 일도 벌어질 수 있고요. 심한 경우에는 예상하지 못한 공격에 서비스가 뚫리는 일이 생기기도 합니다. 특히 ‘설마 누가 이렇게까지 하겠어?’ 하고 넘겼던 부분이 나중에 서비스 운영에 큰 문제가 되기도 합니다. 이런 위험을 줄이기 위한 간단하면서도 좋은 습관이 하나 있습니다. 바로 내가 직접 서비스의 공격자가 되어보는 것입니다. 내가 만든 기능이나 서비스가 있다면, 그냥 정상적인 사용자처럼 쓰는 게 아니라 어떻게든 깨뜨리려는 사람의 시선으로 한 번 바라보는 거죠. 예를 들어, 서비스에 있는 정보를 몽땅 긁어가려면 어떻게 할까? 서비스를 멈추게 하려면 어떻게 하면 될까? 자동으로 스팸 광고를 올리려면 어떻게 하면 될까? 내가 이 서비스 내부를 훤히 알고 있다면 어디를 노릴까? 이렇게 상상한 것을 실제로 시도해보면 더 좋습니다. 직접 이상한 방식으로 기능을 써보거나, 엉뚱한 데이터를 넣어보거나, 비정상적인 다양한 경로로 망가뜨리려는 시도를 해보는 것입니다. 이렇게 하면 평소에는 보이지 않던 위험들이 하나둘 보이기 시작하고, 자연스럽게 ‘어떻게 막을까?’를 고민하게 됩니다. 물론 모든 상상 가능한 위험을 다 막으려고 하면 너무 비효율적일 수 있습니다. 예를 들어, 사용자 10만 명 서비스인데 1억 명이 몰릴 때까지 대비하는 시스템을 처음부터 만드는 건 과할 수 있습니다. 작은 서비스인데 은행처럼 보안 솔루션을 깔고 감사 절차를 갖추는 것도 마찬가지고요. 저도 스타트업에서 일하면서 "그 정도 트래픽 오면 이미 성공한 거니까 그때 가서 걱정하자"는 농담을 자주 하곤 했습니다. 중요한 건 서비스의 단계나 규모 등 상황에 맞는 적정한 대비입니다. 하지만 분명한 건, 내가 공격자가 되어 생각해보는 습관만으로도 평소에 놓치던 위험을 발견할 수 있고, 훨씬 더 단단한 서비스를 만들 수 있다는 점입니다. 생각보다 어렵지도 않고, 오히려 재미있을 때도 많습니다. 만드는 것만큼 망가뜨리는 것도 흥미롭거든요. 그리고 모든 걸 다 막지 못하더라도, 어떤 위험이 있는지 알고 있는 것과 전혀 모르는 것 사이에는 정말 큰 차이가 있습니다. 그러니 한 번쯤, "내가 공격자라면?" 하고 생각해보세요. 그 생각만으로도 서비스는 훨씬 더 단단해질 수 있습니다.
- 개발
Mar 16, 2025