웹 프로그래밍과 서버 관리를 해본 경험이 있는 필자로서 항상 보안에 신경을 써왔다. 특히 해킹을 여러 차례 경험했기 때문에 그 필요성을 절실히 느끼고 있었다. 하지만 체계적인 정보가 부족했었고, 직접 관련 도서를 읽거나 웹 서핑을 통해서 하나씩 몸으로 익혀야 했었다. 지금도 보안에 관련한 책은 두루 읽어보고 있는데, 그러던 중에 마침 해킹 사례로 풀어쓴 웹 보안(Web Security, Privacy & Commerce)을 접하게 되었다.
이 책은 웹 보안에 관심이 있는 사람, 서버 운영자, 웹 프로그래머라면 한번은 꼭 읽어봐야 할 책이다. 각각의 주제에 대해 아주 자세히 다루고 있지는 않지만, 필요한 정보들에 대해 두루 설명하고 있기 때문에 웹 보안 또는 보안의 레퍼런스로 쓰기에 적절할 것이다.
이 책의 구성은 크게 5부분으로 나뉘어져 있다. 각각 웹 기술, 개인 사용자를 위한 프라이버시와 보안, 웹 서버 보안, 컨텐츠 제공자를 위한 보안, 그리고 부록으로 구성되어 있다.
1부 웹 기술에서는 웹의 기원에 대한 기초적인 설명으로 시작해서 암호학에 대해서 이야기를 한다. 그리고 이 암호학이 컴퓨터, 특히 웹에서 어떻게 이용되는가에 대해 설명한다. 여기서 다루는 암호 알고리즘은 대칭키 알고리즘, 공개키 알고리즘, 그리고 메세지 압축 함수(Message Digest Function)이다. 암호에 대해서는 구현에 대한 설명이 기본적인 동작원리와 사용법에 대해서 다룬다. 그리고 기존의 TCP/IP에 SSL을 사용함으로써 어떻게 보다 안전한 네트워킹을 가능하게 할 지에 대해 설명한다. 여기서 아주 자세한 내용은 얻을 수 없지만 SSL, PGP 등을 사용해야 하는 동기를 얻을 수 있을 것이다.
2부 개인 사용자를 위한 프라이버시와 보안에서는 관리자나 개발자의 측면이 아닌 사용자 입장에서의 보안에 대한 이슈에 대해 설명을 한다. 사용자가 알지 못하는 자신의 정보가 어떻게 저장되는지를 보여주고 원하지 않는 정보 제공을 막는 방법에 대해서도 설명을 한다. 서버에 남겨지는 로그에서부터 쿠키, 액티브X, 플러그인, 자바, 플래시 등을 다룬다. 또한 스팸 메일 피하는 법, 비밀번호 잘 정하는 법, 광고 막는 법, 익명 브라우징, 보안 이메일에 대해서도 다룬다.
3부 웹 서버 보안에서는 서버에 대한 보안에 대해서 다룬다. 이 책의 주제가 웹 서버 보안이지만 웹 서버가 서버에서 실행되기 때문에 서버 자체의 보안을 무시할 수도 없는 것이기 때문이다. 컴퓨터 하드웨어에 대한 보안에서부터 시작하여 서버 구성 및 사용상의 문제점, 웹 프로그래밍시 주의해야 할 점, HTTPS 사용하기, DNS 등에 대해서도 다룬다. 특히 16장 웹 애플리케이션 보안은 특히 개발자에게 바로 와 닿을 수 있는 내용이 될 수 있겠다. 어쩌면 너무 뻔한 내용일 수 있고 다른 곳에서 이미 접한 내용일 수도 있지만 이런 내용들을 체계적으로 정리한다는 것이 얼마나 어려운지는 노련한 개발자라면 잘 알 수 있을 것이다. 그리고 HTTP가 아닌 HTTPS를 제공하는 서버를 구성하는 방법에 대해서도 설명을 하고 있지만, 자세히 나오지는 않았다. PHP와 Apache에 대해서 많이 이야기를 하고 있고 IIS에 대해서도 조금은 다루고 있다. 하지만 내용 자체가 특정 환경에 종속적인 것은 아니다.
4부 컨텐츠 제공자를 위한 보안은 사용자 측면이 아닌 정보 제공자, 서버 관리자의 측면에서 보안을 다룬 것이다. 웹 페이지에 제한된 사용자만이 접근할 수 있게 하는 방법에 대해 간략히 다룬다. 그리고 Authenticode와 코드서명에 대해서 다룬다. 코드 서명은 웹에서 다운받는 애플리케이션이나 코드들이 정상적인 코드이고 변경되지 않았다는 것을 신뢰받은 업체로부터 인증받을 수 있게 한 것이다. 그리고 포르노, 필터링 소프트웨어, 검열, 디지털 결제에 대해서도 조금씩 다룬다. 또한 프라이버시 정책, P3P, 지적 재산권에 대한 정책도 다루고 있다.
5부 부록에서는 필자가 운영했던 ISP에 대한 경험담을 재밌게 들려주고 앞에서 자세히 다루지 못했던 SSL/TLS, P3P, PICS에 대해서 좀더 자세히 다룬다.
요약하자면 이 책은 웹 보안 및 보안에 대해서 이슈가 되고 있는 거의 모든 분야에 대해서 다루고 있다. 자세한 구현까지는 다루고 있지 않지만 간단한 작동 원리, 필요성, 해결책에 대해서 다루고 있다. 이 책은 개발자에겐 개발시 고려해야 할 사항들을 말해주고, 사용자에겐 웹이나 컴퓨터를 사용함에 있어 고려해야 할 사항들을 말해주고 있다. 이 책을 읽은 후 좀 더 자세히 알고 싶은 분야가 있다면 해당 분야를 자세히 다룬 책을 읽으면 될 것이다.
처음에는 1000페이지라는 엄청난 양에 두려움을 느낄 수 있지만, 관심 있는 부분부터 읽으면 어느새 다 읽을 수 있을 것이다. 여러 분야를 골고루 다루다 보니 양이 늘어날 수 밖에 없지 않았을까 생각이 든다. 번역은 깔끔한 편이다.