실용주의 프로그래머 Topic 43

Topic 43 바깥에서는 안전에 주의하라

데이비드 토머스, 앤드류 헌트

Alt text

느낌표 ! (인상 깊은 문장 | 문맥)

대부분의 경우 이런 사고를 일으키는 공격자는 엄청나게 똑똑하지도 않고, 어느 한구석 특별한 능력이 있는 것도 아니다.

모두 개발자가 부주의한 탓이다.

p.331

사실 개발을 하다보면 A-Z 모든 것을 확인하고 빈틈 없이할 수는 없다. 그렇지만 문제가 발생하는 것은 모두 개발자의 몫이다. 그렇기에 계속해서 나와 제품이 발전해 나아가야 한다.

여러분이 다음으로 해야 하는 일은 코드가 잘못될 수 있는 경우를 찾아보고, 각 경우에 대한 단위 테스트를 추가하는 것이다. 잘못된 매개 변수를 넘기거나 리소르르 흘리거나 리소스가 모자라는 경우 따위를 생각해 보아야 한다.

p.331

일반적인 인풋에 대한 아웃풋 확인하기는 쉽지만 그렇지 않은 상황을 상상해 테스트 케이스로 확인하기는 어렵다. 아무래도 일반적인 상황은 아니기 때문이다. 이럴 때는 과한 상상력이 제품을 튼튼하게 한다.

기본 보안 원칙

  1. 공격 표면을 최소화하라.
  2. 최소 권한 원칙.
  3. 안전한 기본값.
  4. 민감 정보를 암호화하라.
  5. 보안 업데이트를 적용하라.

p.332

원칙이라고 불릴만큼 당연한 것들인데 이를 세부적으로 나누어 점검해보면 그렇지 못한 경우가 많을 듯 싶다. 이럴 때 평안한 서비스에 어떤 파도가 몰아칠지 모른다.

공격 표면을 최소화하라

코드의 복잡성은 공격 매개체 attack vector 를 유발한다.

입력 데이터는 공격 매개체다

인증이 없는 서비스는 공격 매개체다.

인증을 요구하는 서비스도 공격 매채체다.

출력 데이터는 공격 매개체다.

디버깅 정보는 공격 매개체다.

p.333 ~ 335> p.335

모든 것을 비판적으로 바라보는 관점이 보안에서 중요한 것 같다. 다 착한 사용자고 다 개발에 무지한 사용자면 이런 걱정을 안해도 되겠지만 현실은 그렇지 않다. 그렇기에 어떠한 상황에서든지 긴장하고 철저하게 계획하고 진행해야할 필요가 있다. 예를 들어 중요한 키 파일를 단순히 로컬에 저장하고 마구잡이로 전달하고 소지하기보다 저장이 필요하다면 폴더를 따로 관리하고 키 파일을 업로드할 때도 키 파일을 새로 만들어 업로드하는 등이 있을 수 있겠다.

최소 권한 원칙

최소한의 권한만을 꼭 필요한 시간만큼만 제일 짧게 부여하라는 게 또다른 핵심 원칙이다.

p.335

가장 흔히 발생하는 실수는 리눅스 환경에서 root 권한으로 사용하는 것이다. 꼭 필요할 때만 sudo 를 붙여 사용하는 것이 중요하겠다. 그리고 사용자 별 적절 권한을 부여했을 때 발생할 수 있는 사고의 범위도 매우 줄어들 것이다.

여러분의 애플리케이션 혹은 웹 사이트 사용자의 기본 설정은 가장 안전한 값이어야 한다.

p.336

권한이야말로 ‘적을수록 낫다 less is more’.

p.336

민감 정보를 암호화하라.

p.337

보안 패치를 신속히 적용하라.

p.338

Topic 43 느낌

Topic 43 에서는 비판적으로 일반적이지 않은 상황을 고려해서 대처하는 여러 구체적 방안을 제시하고 있다.


실용주의 프로그래머 Topic 42

Topic 42 속성 기반 테스트

expo 47 -> 48 빌드 에러 해결

해결 방법

package.json 에서 expo-cli 를 삭제

NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지