로그인 화면이 있다는 이유만으로 안전한 서비스가 되지는 않는다. 무엇을 지킬지, 어떤 위협이 있는지, 실제 약점과 영향은 무엇인지, 사용자를 확인한 뒤 어떤 행동까지 허용할지를 차례로 나눠야 한다.
보안에서는 위협과 약점이 위험으로 이어지는 판단과, 신원을 확인한 뒤 권한을 확인하는 절차를 나눠야 한다.
asset threat vulnerability risk는 무엇이 다를까?
왼쪽은 위험을 평가하는 흐름이고, 오른쪽은 사용자의 신원과 행동 권한을 차례로 확인하는 흐름이다. 같은 보안 상자에 있어도 답하는 질문은 다르다.
| 용어 | 질문 | 예 |
|---|---|---|
asset | 무엇을 지킬까? | 계정, 개인정보, 결제 데이터 |
threat | 무엇이 피해를 일으킬 수 있나? | 계정 탈취 시도, 악성 코드 |
vulnerability | 어떤 약점이 악용될 수 있나? | 약한 비밀번호, 검증 없는 입력 |
risk | 발생 가능성과 영향은 어느 정도인가? | 관리자 계정 탈취의 가능성·피해 |
위협이 존재해도 공격 가능한 취약점과 노출 경로가 없으면 위험은 달라진다. 취약점이 있어도 자산 가치와 영향, 기존 통제가 다르면 우선순위가 달라진다. 위험 평가는 용어 하나로 겁을 키우는 일이 아니라 수정 순서를 정하는 과정이다.
authentication과 authorization은 어느 순서일까?
authentication은 사용자가 누구인지 확인하는 인증이고, authorization은 확인된 사용자가 어떤 자원과 행동을 허용받는지 결정하는 인가다.
로그인에 성공해도 다른 사용자의 주문을 읽을 권한은 없다. 화면에서 버튼을 숨기는 것만으로 인가가 끝나지 않으며 서버가 요청마다 대상과 권한을 확인해야 한다.
session은 여러 요청에 걸쳐 인증 상태와 관련 정보를 이어 가는 방식이다. 세션 ID가 탈취되면 공격자가 인증 절차를 우회할 수 있으므로 안전한 쿠키 속성, 만료, 재인증과 폐기 정책이 필요하다.
encryption hash digital signature는 목적이 다르다
encryption은 키를 사용해 데이터를 읽을 수 없는 형태로 바꾸고, 올바른 키로 decryption한다. 대칭키 암호는 같은 비밀키 계열을, 공개키 암호는 공개키·개인키 쌍을 사용한다.
hash는 입력을 고정 길이 값으로 변환하는 단방향 함수다. 비밀번호 저장은 단순 고속 해시가 아니라 salt와 비밀번호 전용 느린 해시 함수를 사용해야 한다.
digital signature는 개인키로 서명하고 공개키로 검증해 서명자와 데이터 무결성을 확인한다. 기밀성을 위한 암호화와 목적이 다르다.
입력과 세션을 노리는 공격은 어떻게 다를까?
SQL injection: 입력이 SQL 구조로 해석되도록 주입. 매개변수화된 쿼리와 최소 권한 적용XSS: 신뢰하지 않은 데이터가 브라우저에서 스크립트로 실행. 출력 문맥별 이스케이프와 안전한 DOM API 사용session hijacking: 세션 식별자를 훔쳐 사용자 행세. TLS, 안전한 쿠키, 만료·재발급 정책 적용brute force attack: 비밀번호나 키 후보를 반복 대입. 강한 인증, 속도 제한, 탐지와 다중 인증 검토buffer overflow: 버퍼 경계를 넘어 쓰는 오류. 메모리 안전한 API, 경계 검사와 완화 기법 적용
방어 하나가 모든 공격을 막지는 않는다. 예를 들어 TLS는 전송 중 데이터를 보호하지만 서버의 SQL injection 취약점을 고치지 않는다.
보안 문제를 어떤 순서로 검토할까?
- 보호할 자산과 민감도를 정한다.
- 신뢰 경계와 입력·출력 경로를 그린다.
- 위협과 실제 취약점을 구분한다.
- 인증 뒤에도 자원별 인가를 확인한다.
- 기밀성·무결성·가용성 중 필요한 통제를 고른다.
- 로그와 탐지·복구까지 시험한다.
핵심 요약
위협은 피해 원인, 취약점은 악용 가능한 약점, 위험은 발생 가능성과 영향의 판단이다. 인증은 누구인지, 인가는 무엇을 할 수 있는지를 확인한다. 암호화, 해시, 전자서명도 기밀성·단방향 검증·서명자와 무결성이라는 목적이 다르다. 공격 이름을 외우는 데서 끝내지 말고 자산, 신뢰 경계, 입력 경로와 서버 권한 검사를 연결하자.

