반응형
아니 이게 무슨 일이야. 방문자 수가 왜 이리 늘었지. 일단 감사합니다 여러분. 다시 열심히 해 볼게요.
보안에 대한 기본적인 오해
- 규모가 큰 서비스나 회사만 공격받는 것이 아니다. 규모가 작은 회사, 심지어는 개인적으로 작업한 토이 프로젝트조차도 공격의 대상이 될 수 있다.
- 보안과 관련해서는 프론트엔드와 백엔드를 구분하는 것이 의미가 없다. 둘 다 중요하다.
- 많은 사람이 사용한다고 해서 그것이 안전하다는 보장은 없다. 실제 업무나 운용 환경에서 사용할 라이브러리들은 반드시 공식 문서와 테스트를 통해 안전을 검증한 후에 사용해야 한다.
- 공격을 하는 사람은 생각조차 못한 방식으로 다가오기도 한다.
- 전체 프로그램의 보안 수준을 결정하는 것은 보안이 가장 약한 부분이다.
- 사람을 대상으로 생각해보자. 대부분은 기업 내부에서 보안 의식이 가장 낮은 사람에 의해 보안이 뚫린다.
- 즉, 조직 전체에서 보안의 기준은 조직 내부에서 보안 의식이 가장 낮은 사람을 기준으로 잡아야한다.
정보 보안의 3가지 요소
- 무결성
- 권한을 가진 사람만 정해진 방법으로 정보를 변경할 수 있어야 한다.
- 내가 올린 게시글은 다른 사람이 삭제할 수 없어야 한다.
- 나의 SNS 닉네임을 누군가 함부로 변경한다면, 이 또한 무결성이 침해된 것이다.
- 권한을 가진 사람만 정해진 방법으로 정보를 변경할 수 있어야 한다.
- 기밀성
- 권한을 가진 사람만 정보에 접근할 수 있어야 한다.
- 다른 사람이 나의 개인정보인 주민등록번호를 보는 것은 기밀성이 침해된 것이다.
- 개발자의 실수로 사용자의 개인정보를 노출하는 부분의 API를 잘못 작성했다고 가정해보자. 다른 사람이 볼 수 있는 웹 사이트의 공개적인 프로필에는 개인정보가 드러나지 않지만, 개발자만 알 수 있는 내부적인 데이터 상으로는 주민등록번호가 전송된다면 이는 기밀성이 침해된 것이다.
- 기밀성과 무결성은 같이 침해될 수도 있고 어느 한쪽만 침해될 수도 있다.
- 권한을 가진 사람만 정보에 접근할 수 있어야 한다.
- 가용성
- 권한이 있는 사용자가 원할 때 그 정보에 대한 접근이 가능해야 한다.
- 서버가 다운되었다면 이를 가용성이 침해된 상황이라고 볼 수 있다.
- 권한이 있는 사용자가 원할 때 그 정보에 대한 접근이 가능해야 한다.
웹 보안의 구성 요소
- 방화벽
- 불필요한 포트로 들어오는 요청을 걸러준다.
- 높은 수준의 방화벽은 잠재적으로 위험 요소가 있는 모든 정보를 감지하고 막아준다.
- 클라우드 컴퓨팅 서비스에 좋은 방화벽이 많이 내장되어 있다.
- 좋은 방화벽으로 단순한 공격들은 막을 수 있다.
- 시큐어 코딩
- 안전하게 코드를 작성한다는 의미이며 중요하게 다뤄지는 부분이다.
- 프로그래밍을 할 때 보안에 신경써서 작업하는 것으로 개발 단계에서 개발자가 취약점이 될 수 있는 논리적 오류 등을 신경써서 작업하는 것을 말한다.
- 데이터 보안
- DB에 저장되어 있는 데이터에 관한 보안이다.
- DB 서버와 애플리케이션 서버가 분리되어 있는 큰 규모의 서비스일 경우 더욱 중요하다.
- 허가받은 컴퓨터만 DB 서버에 접근할 수 있게 해야 한다.
- 민감한 데이터를 저장하거나 송수신 할 때는 반드시 암호화가 되어 있어야 한다.
- 로그 관리
- 공격이 일어났는지 확인하는 확실한 방법은 바로 접속 로그를 확인하는 것이다.
- 중요한 접속 로그, 에러 로그 등은 반드시 기록해야 한다.
- 접근 관리
- 너무 쉬운 비밀번호를 설정하면 안 된다.
* 해당 게시글은 인프런의 <웹 개발자라면 꼭 알아야 할 보안 기초> 강의를 참고하여 작성하였습니다.
반응형