강력한 보안은 보안 마인드에서 시작하고 민감한 정보의 이용과 저장을 최소화하는 노력의 결과물이라는 것이 개인적인 보안에 대한 생각이다.

SmartFace의 10 Most Common Security Mistakes  포스트에서 소개된 모바일 앱 개발 시 간과하기 쉬운 보안에 대한 실수 10가지와 권고 사항을 위주로 발췌 해 보았다.

  1. 중요한 데이터는 저장하지 않는 구조로 설계하고 KeyChain & KeyStore에 암호가 저장되도록 함
  2. Numeric 데이터를 입력 시 특수문자를 허용하거나 Alphanumeric을 허용 함으로서 행킹코드가 들어오는 것을 프론트엔드 밸리데이션을 통해 방지
  3. 서버 기반의 컨트롤에만 의존하지 말아야 함. 앱 자체의 백 엔드를 보호하는데에도 신경을 써야함
  4. HTTPS는 항상 중요한 정보 송수신 때에는 사용되어야 하며, 디바이스에서 제공되는 범용인증서보다는 앱과 서버 간에 독자적으로 사용 가능한 custom certificate 활용
  5. Obfuscation(코드 난독화)을 거치도록 하며, 특히 안드로이드 필수
  6. 코멘트라인을 상용버전 업로드시 모두 삭제하기
  7. “꼭” 필요한 Permission 사용한다. 주소록은 해킹의 주목표 중에 하나라는 것을 간과하면 안 된다.
  8. 암호화는 암호를 푸는 키도 암호화하고 Runtime 중에 암호화 키를 다운로드 허용하지 않기
  9. 어플리케이션이 Rooted/Jailbroken 디바이스인지 체크하여 앱 아키텍쳐에 반영
  10. 어플리케이션 바이너리 파일이 해커로부터 보호 (cross-platform native frameworks 사용 DOM Payload)

SmarFace는 C++ 짜여진 Core와 자바스크리립트 엔지을기반으로한 듀얼 플랫폼 Native App을 개발 할 수 있는 플랫폼을 제공한다.

SmartFace
SmartFace: JavaScript Native Mobile Application Development Platform

개발 프로젝트관리 관점에서 연상 해본다면, 알면서 간과하는 보안 문제로 야기되는 ‘시니컬한’ 프로젝트관리 요소 5개를 꼽는다면;

  1. 보안은 개발자가 몫으로 생각하는 무지한 현업 (또는 요청/의로인)
  2. 게으른 개발자 (보안에 대한 공부 또는 쉽게 코딩하려는 게으름)
  3. 프로젝트팀 내에 보안전문가의 부재 또는 리뷰 절차 부재
  4. 위 3가지 부분을 알면서도 프로젝트를 잘 끌고 가는 PM
  5. 그리고, 이를 승인해주는 Stakeholder.