희귀한 책이다. 그래서 꼭 있어야 하는 책이다. 보안이므로.
버그 없는 안전한 소프트웨어를 위한 CERT 자바 프로그래밍
컴퓨터 비상 대응팀(CERT)은 다양한 소프트웨어에서 취약점을 유발하는 안전하지 못한 코딩 습관이 반복되는 것을 보았다. 이 책에서 제시하는 지침을 적용하면 취약점을 유발하는, 안전하지 못한 코딩 습관을 제거해 공격에 더 잘 견디는 튼튼한 고품질 시스템을 만들 수 있다.
- 저자 : 프레드 롱 외 6명
- 번역 : 강권학
- 출간 : 2012-08-27
"Java 세계에서는 보안을 부가 기능으로 생각하지 않습니다. 언제나 보안을 고려해야 합니다.보안을 염두에 두지 않는 개발자가 결국 문제를 일으킵니다. 그러나 보안 기능이 준비되어 있다고 해서 소프트웨어가 저절로 안전해지는 것은 아닙니다. "CERT; Secure Coding Standard for Java"는 수 년간 발전해온 표준적인 관습을 요약한 해설서입니다. 그렇다고 해서 이론적인 연구 논문이나 제품 안내 자료도 아닙니다. 이 책은 중요한, 개발에 필수적인, 실전에서 검증된, 기업 규모의 프로젝트에 적용할 수 있습니다."- James A. Gosling
이 책의 원 제목은 "CERT; Secure Coding Standard for Java"이다. 직역하자면 "자바를 위한 보안 코딩 표준"정도가 되겠다. CERT는 "Computer Emergency Response Team"을 의미한다. "컴퓨터 긴급 대책 팀" 정도로 해석이 될려나?
그런데 번역한 제목은 "버그 없는"으로 시작한다. 물론 뒤에 안전한 이라는 형용사가 있어서 버그 없는 이라는 말의 의미를 어느 정도 가늠할 수도 있겠다. 하지만 보통 버그가 수식하는 의미는 프로그램 상 정상적인 구동을 가로막는 프로그래밍적 오류를 말하는데, 여기서는 보안 상의 구멍 정도로 의미한다고 보겠다.
이 책을 보면 상당히 놀라운 면이 많다. 일반 프로그래머의 경우 정상적으로 프로그램이 구현되면 그만이라고 생각하지만, 그 안에 인지하지 못한 수 많은 구멍들이 산재해 있다. 처음부터 그러한 점을 염두에 두지 않으면 버그 없는 버그 투성이의 프로그램이 탄생할 수 있다. 즉 작동은 잘 되지만, 해킹의 염려가 매우 높을 수 있다는 것이다.
이 책은 입력 검증 부터 시작해, 객체 지향, 선언, 표현식, 연산, Method, Exception 등으로 파트를 나누어 보안성을 갖춘 Java Programming을 위한 Rule을 서술형 제목으로 갖고 있다.사실 프로그래밍을 어느 정도 한 사람이라면 이 책의 목차만 참고해도 꽤나 솔깃할 법한 서술형의 제목들이 가득하다. Java에 대해 어느 정도 아는 사람이라면 직관적으로 와 닿는 제목이라고 여길 것이다. 책의 내용도 그렇다. 예시된 Code과 설명은 "보안 개론"서가 아니라 당장 Code를 뜯어 고칠 법한 실전적 예시 중심의 설명을 하고 있다.
어느 정도 연차가 쌓이게 되면 사실 무엇을 더 해야 내가 더 프리미엄이 있는 프로그래머가 될 지 방향을 가늠하기 어려울 때도 있을 것이다. 다른 프로그래머와 차별화되는 프로그래머가 되려면 아마도 이러한 보안적으로도 우수한 프로그래밍을 하는 프로그래머가 아닐까? 사실 처음에 밝힌 Java의 아버지 James A. Gosling의 말 처럼 Java에서는 보안을 부가기능으로 보지 않는다고 했다. 그건 선택적인 요소가 아니라 필수적인 요소이다.
영화 300을 보면 스파르타의 전사에게 필수는 창 뿐 아니라 몸 전체를 막는 방패도 포함되었다. 이 책을 본 뒤에 문제를 해결해 주는 창과 해킹으로부터 안전한 방패를 갖춘 스파르타 전사 같은 프로그래밍이라면 당신에게 강인한 프로그래머(?)라는 칭호와 함께 더욱 업그레이드 된 자신을 볼 수 있으리라 생각 된다.