로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

Writing Secure Code 2/E : 안전한 코드 작성 기술

   
지은이 마이클 하워드/박선미   |   출판사 정보문화사  |   발행일 2003년 09월 15일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 32,000원28,800원 10%
마일리지 5% 1,600원
발행일 2003-09-15
ISBN 8956741328 | 9788956741321
기타정보 번역서 | 852쪽
예상출고일
배송비 무료배송
   
컴퓨터공학
종합지수 6p 73 위
   
이 책의 원서
  Writing Secure Code(2/E)
Microsoft Press | Michael Howard
 

네트워크 환경에서 안전한 애플리케이션 코드를 작성하기 위한 실무에 적합한 전략과 기술.. 마이크로소프트에서 추천하는 도서!

빌 게이츠
“지난 20년 동안 컴퓨터 산업은 우리 삶의 방식에 큰 변화를 가져왔다. 그것은 원격 통신으로부터 운임에 관련된 은행 업무에 이르기까지 모든 중요한 인프라의 부분으로서 사용되고 있고 개인 건강 그리고 재정 기록과 같은 매우 방대한 양의 민감한 데이터를 포함하고 있다. 안전한 소프트웨어를 만드는 것은 미래를 보호하기 위해 지금까지 해왔던 것보다 더 중요해지고 있다. 모든 소프트웨어 개발자는 모든 개발 프로젝트에 보안을 고려하고 추가하는 방법을 배워야만 한다. 고객에게 신뢰를 줄 수 컴퓨터 환경을 제공할 수 있도록 도움을 주고 또한 마이크로소프트에서 읽기를 추천하고 있는 이 책 “안전한 코드 작성 기술”은 올바르게 보안을 적용할 수 있도록 개발자에게 필요한 토대를 제공한다.”

Part 1 현대에 있어서 보안
Chapter 1 보안상 안전한 시스템의 필요성
World Wide Web에서의 애플리케이션
Trustworthy Computing의 필요성
모든 사람의 관심을 집중시키는 방법
기업내에 효과적으로 보안의 가치를 설득하는 방법
실제 공격을 보여줌으로써 기업조직에 보안의 가치를 설득하는 방법
보안을 기업문화로 정립시키기 위한 몇가지 아이디어
최고 경영자가 메일을 보낸다
보안 담당자를 지정한다
공격자의 우위 및 방어자의 딜레마
원칙 #1: 방어자는 모든 위치를 방어해야 한다; 공격자는 가장 약한 위치를 선택할 수 있다.
원칙 #2: 방어자는 이미 알려진 취약성에 대해서만 방어할 수 있다; 공격자는 알려지지 않은 취약성을 나중에 찾을 수 있다.
원칙 #3: 방어자는 항상 경계해야한다; 공격자는 아무 때나 공격할 수 있다.
원칙 #4: 방어자는 규칙에 따라 경기를 한다; 공격자는 반칙을 할 수 있다.

Chapter 2 보안 예방을 위한 개발과정
개발과정의 개선
교육의 역할
의무적 교육에 대한 저항
지속적인 교육
보안을 과학적으로 발전시키기
더 많은 사람이 더 많은 문제점을 찾을 수 있다는 허구
그 증거!
설계 단계
인터뷰시에 보안에 관한 질문
제품의 보안 목표를 정의하라
보안도 제품 기능이다
보안을 위한 시간을 할당하기
위협 모델을 통해 안전한 설계가 가능하다
안전하지 못한 기능은 단종 계획(end-of-life plan)을 만든다
고쳐야 할 버그의 기준을 설정하기
보안 팀의 검토
개발 단계
새로운 코드를 추가할 수 있는 사람에 대해 철저히 관리한다
신규 코드의 보안에 관한 피어 리뷰(peer review)
안전한 코딩에 대한 가이드라인을 정의하라
이전의 결함을 검토하라
외부 기관을 이용한 보안 검토
Security Push
버그 수를 적정선으로 유지하라
버그에 대한 측정기준을 유지하라
이스터 에그를 만들어 사람을 놀라게 하지 말라
테스트 단계
출시 및 유지보수 단계
완료를 어떻게 알 수 있는가?
대응 절차
책임

Chapter 3 항상 같이 해야 할 보안의 원칙
SD3: 보안을 고려한 설계, 기본설정 그리고 운용
보안을 고려한 설계(Secure by Design)
보안을 고려한 기본 설정(Secure by Default)
보안을 고려한 운용(Secure by Deployment)
보안의 원칙
실수에서 배운다
공격가능 영역을 최소화한다
기본 설정은 보안을 고려하여 정한다
다단계 방어를 한다
최소한의 권한을 사용한다
이전 버전과 호환성 문제는 항상 어려움이 수반됨을 명심한다
외부 시스템은 보안상 안전하지 않다고 가정한다
장애시 대책을 세운다
장애시 안전한 모드로 전환한다
안전한 기능과 보안 기능은 별개라는 것을 명심한다
보안을 비공개에만 의존하지 않는다
코드와 데이터를 분리한다
보안 문제는 올바르게 고친다

Chapter 4 위협 모델링
위협 모델에 의한 안전한 설계
위협 모델링을 수행할 팀을 소집한다
애플리케이션을 분해한다
시스템에 대한 위협을 결정한다
결정된 위협에 우선순위를 정한다
위협에 대응하는 4가지 방법 중 하나를 선택한다
위협에 대응할 기법(technique)을 선택한다
보안 기법
인증
권한 부여(Authorization)
변조 방지 및 기밀성 향상을 위한 기술
기밀정보를 보호하거나, 기밀정보는 아예 저장하지 말라
암호화, 해시, MACs 그리고 전자서명
감사
필터링, 조절(throttling) 그리고 서비스 품질(Quality of Service)
최소 권한
급여 애플리케이션 예제의 위협을 예방하기
다양한 위협과 대응


Part 2 안전한 코딩 기법
Chapter 5 공공의 적, 1위: 버퍼 오버런
스택 오버런
힙(Heap) 오버런
배열 첨자 오류
포맷 문자열 버그
유니코드와 ANSI 버퍼 불일치
유니코드 버그의 실제 예
버퍼 오버런 예방법
안전한 문자열 처리 방법
문자열 처리 함수 사용 시 주의점
Visual C++ .NET의 /GS 옵션

Chapter 6 적절한 사용 권한 결정
ACL이 중요한 이유는?
레지스트리 코드 수정본
ACL의 구성
적절한 ACL을 선택하는 방법
효과적인 거부 ACE
ACL 생성
Windows NT 4에서 ACL 생성
Windows 2000에서 ACL 생성
ATL(액티브 템플릿 라이브러리)을 이용한 ACL 생성
ACE 권한 지정의 순서
터미널 서버와 원격 데스크톱 SID의 주의할 점
널(NULL) DACL과 그 밖의 위험한 ACE
NULL DACL과 감사(audit)
그 밖의 위험한 ACE
NULL DACL을 변경할 수 없다면?
운영 체제에 포함되지 않는 기타 접근 권한 메커니즘
.NET 프레임워크 역할
COM+ 역할
IP 제한
SQL 서버의 트리거와 SQL 서버의 사용 권한
의료 애플리케이션 예제
접근 권한 메커니즘의 중요 사항

Chapter 7 최소 권한으로 실행
현실 세계에서 최소 권한
바이러스와 트로이 목마
웹 서버 손상
사용 권한 제어의 개요
권한의 개요
SeBackupPrivilege의 문제
SeRestorePrivilege 문제
SeDebugPrivilege 문제
SeTcbPrivilege 문제
SeAssignPrimaryTokenPrivilege와 SeIncreaseQuotaPrivilege 문제
SeLoadDriverPrivilege 문제
SeRemoteShutdownPrivilege 문제
SeTakeOwnershipProvilege 문제
토큰의 개요
토큰, 권한, SID, ACL과 프로세스 간의 연관성
SID와 사용 권한 검사, 권한과 권한 검사
애플리케이션이 상승된 권한을 필요로 하는 세 가지 이유
ACL 문제
권한 문제
LSA 기밀 데이터 사용
상승된 권한 문제의 해결책
ACL 문제 해결하기
권한 문제 해결하기
LSA 문제 해결하기
적절한 권한 결정 과정
단계 1: 애플리케이션에서 사용되는 모든 리소스 찾기
단계 2: 애플리케이션에서 호출하는 모든 권한이 필요한 API를 찾기
단계 3: 어떤 계정이 필요한가?
단계 4: 토큰의 내용(SID와 권한) 읽어 오기
단계 5: 모든 SID와 권한이 필요한가?
단계 6: 토큰 조정
Windows XP와 Windows Server 2003에서 낮은 권한의 서비스 계정
가장(impersonate) 권한과 Windows Server 2003
최소 권한 디버그 문제
애플리케이션이 일반 사용자 모드에서 실패한 이유
애플리케이션이 실패하는 문제 분석 방법

Chapter 8 암호화(Cryptography)의 약점
난수(random number) 사용의 문제
rand 함수의 문제점
Win32에서 암호화된 난수
관리되는 코드에서 암호화된 난수 생성
웹 페이지에서의 암호화된 난수
암호화 키(Cryptographic Key) 생성에 암호(Password) 사용
효율적인 암호(password)의 비트 크기
키 관리 문제
장-시간 키와 단-시간 키
데이터 보호에 적절한 키 길이 사용
키는 키를 사용하는 데이터 가까이에만 둔다
키 교환 문제
자신만의 암호화(cryptographic) 함수 생성
동일한 스트림-암호 암호화 키 이용
개발자들이 스트림 암호를 사용하는 이유는?
스트림 암호의 함정
만약 반드시 동일한 키를 사용해야 한다면?
스트림 암호(cipher)에 대한 비트-플립 공격
비트-플립 공격 해결책
언제 해시, 키-해시, 디지털 서명을 사용하는가?
원-텍스트와 암호화된 텍스트(ciphertext) 버퍼의 재사용
해커의 위협을 줄이기 위해 암호화 기술을 사용하라
사용하는 암호화 기술을 문서화한다

Chapter 9 기밀 데이터 보호
기밀 데이터 공격
기밀 데이터를 반드시 저장할 필요는 없다
난수(Salt)가 추가된 해시
공격자의 공격을 어렵게 하기 위한 PKCS #5 활용
사용자로부터 기밀 데이터 얻기
Windows 2000과 그 이후 버전 운영 체제에서 기밀 데이터 보호
Windows XP에서의 클라이언트 자격 증명
Windows NT 4에서의 기밀 데이터 보호
기밀 데이터 보호
PnP 디바이스에서 디바이스 정보 얻기
최소 공통 분모 솔루션은 선택하지 않는다
메모리에서 기밀 데이터 관리
컴파일러 최적화(Optimization) 주의점
메모리 상의 기밀 데이터 암호화
민감한 데이터의 페이징을 막기 위해 메모리 잠금 함수 이용
관리되는 코드에서 기밀 데이터 보호
관리되는 코드에서 메모리 내의 기밀 데이터 관리
보안 수준 올리기
FAT 파일 시스템상의 파일에 데이터 저장
데이터 암호화에 암호화 키와 XOR를 사용
데이터 암호화에 3DES 키를 사용
데이터 암호화에 3DES 키를 사용하고 레지스트리에 암호 저장
데이터 암호화에는 3DES를 사용하고, 레지스트리에 강력한 이름을 저장
사용자에게는 암호를 입력 받고, 파일과 레지스트리 키에는 보안(ACL)을 지정
기밀 데이터 보안의 장/단점

Chapter 10 모든 입력 데이터는 위험하다!
어떤 문제들이 있는가?
잘못된 신뢰(Misplaced Trust)
입력 데이터 공격을 방어하는 전략
적법성 검증 방법
펄(Perl)에서 오류 검사(tainting check) 옵션
일반식(regular expression)을 이용한 입력 데이터 검사
일치하는지 검사 후에는 검증을!
일반식과 유니코드
일반식 로제타 스톤
펄에서의 일반식
관리되는 코드에서의 일반식
스크립트에서 일반식
C++에서의 일반식
일반식을 사용하는 좋은 사례

Chapter 11 정규 데이터 표현
'정규적인(Canonical)’은 무엇을 의미하고 왜 문제가 되는가?
정규 파일명 문제
넵스터의 이름 필터 통과 버그
애플 Mac OS X와 아파치의 취약점
DOS 디바이스 명 취약점
썬 마이크로시스템 스타오피스의 /tmp 디텍토리 심볼릭-링크 취약점
윈도우 정규 파일명 실수
웹에서의 정규화 문제
AOL의 컨테이너 통과 버그
eEye의 보안 검증 통과
보안 영역과 인터넷 익스플로러 4 “점이없는 IP 주소” 버그
인터넷 정보 서버 4.0의 ::$DATA 취약점
한 라인이 언제 실제로는 두 라인인가?
또 다른 웹 문제 - 이스케이프(Esc)
동형이의(Homograph) 공격
정규화 버그 예방
이름에 근거한 보안 결정 하지 않기
일반식을 이용하여 허용되는 이름으로 제한한다
8.3 파일명 생성은 하지 않는다
환경 변수 PATH를 신뢰하지 말고, 완전한 절대 패쓰명을 사용한다
파일명 정규화
안전한 CreateFile 함수 호출
웹에서의 정규화 문제 해결
적법한 입력으로만 제한
UTF-8 문자는 조심스럽게 사용한다
ISAPI 애플리케이션과 ISAPI 필터
파일 이외의 정규화 문제
서버명
사용자명

Chapter 12 데이터베이스 입력
잘못된 신뢰의 문제
의사(Pseudo) 해결책 #1: 사용자 입력을 따옴표로 처리
의사(Pseudo) 해결책 #2: 저장 프로시저 사용
해결안 #1: 절대로 sysadmin으로 데이터베이스 서버를 연결하지 않는다
해결안 #2: 안전한 SQL 문 빌드
안전한 SQL 저장 프로시저 빌드
다단계 방어 예제 코드

Chapter 13 웹에서의 입력
교차-사이트 스크립트: 잘못된 결과 출력
공격자에게
Michael Howard
Microsoft Press의 Designing Secure Web-Based Application for Microsoft Windows 2000의 저자이고 Writing Secure Code의 공동 저자 중 한 사람이다. Microsoft 윈도우 개발 팀 내에 Secure Windows Initiative의 일원으로 보안 설계, 프로그래밍, 그리고 테스트를 담당했다. 또한 Microsoft Security Push Series의 설계자 중 한 사람이다.

David LeBlanc
Writing Secure Code의 공동 저자이고 Trustworthy Computing Initiative의 중요한 구성원 중 한 사람이다. 그리고 네트워크 보안, 네트워크 감사 도구 작성, 그리고 내부 테스트 부문에서 업무를 하고 있다.


역자 Prolog 및 감수의 글
인터넷의 발달은 정보 교류의 가속화와 더불어 생활의 여러 부분에 직접적인 영향을 끼치는 핵심 인프라가 되었다. 전자 상거래, 전자 금융과 같은 개인이나 기업뿐만 아니라, 항공, 운송, 에너지, 국방과 관련되는 시스템들이 인터넷과 연동됨에 따라 인터넷은 사회 전체를 제어하는 신경망 시스템으로 자리를 잡아가고 있다. 인터넷을 통한 광범위한 영역들의 연결 및 강력한 도구들은 컴퓨팅과 커뮤니케이션의 양상을 바꿔 놓았다. 그러나 이렇게 증가된 연결성을 통해 얻을 수 있는 엄청난 이점과 함께, 보안 위협 또한 새로 생겨나게 되었다. 점점 더 상호 간의 연결이 활발해지는 세상 속에서, 개인이나 기업, 정부 기관의 성공이란 실시간으로 안전하게 통신할 수 있는 능력에 달려있다고도 할 수 있다. 그러므로 인터넷을 이용하는 모든 사람들은 보안 상 안전하고, 운용 상 안정된 컴퓨터 시스템을 열망하게 되었다.

이러한 열망을 갖고 있는 개발자라면 이 책을 권하고 싶다. “보안 상 안전한 소프트웨어를 만들고 싶지만 어떻게 해야 하는지 모르는” 개발자들에게 “등대” 역할을 해 줄 것이다. 무심코, 혹은 예제 코드에 따라 작성된 개발 코드가 어떻게 공격당할 수 있는지, 그리고 그러한 공격에 견뎌내기 위해서는 어떻게 설계, 코딩, 테스트, 문서화하는지에 대해 자세한 대처 방법이 예제 및 템플릿과 함께 제공된다. 애플리케이션의 개발자뿐만 아니라 안전한 애플리케이션의 설계, 테스트 또는 사용자 설명서를 작성하는 사람이라면, 이 책이 필요하다. 애플리케이션이 웹 기반이거나 Win32 기반이라면 이 책이 필요하다. 마지막으로 Microsoft .NET을 배우거나 이 위에 애플리케이션을 작성하려는 사람에게도 이 책에서 배워야 할 내용을 많이 발견할 수 있을 것이다.
안전한 코드 작성을 위한 지침서..
오광섭님이 쓰신 서평보기 I 평점 I 조회수(1556) I 공감 (0) I 블로그
1st Edition 때부터 사보려던 책인데, 좀 이따 사야지 하던 찰라 2nd Edition이 나오고, 으~ 웬 책값이 이래 비싸 하다보니 번역서가 나왔다.. 야, 이젠 살 수 있겠구나 했는데 운 좋게도 그냥 얻을 수 있는 기회가.. 쿠쿠쿠.. 어찌 기쁘지 않으리오..유비쿼터스, 이런 단어를 들먹이지 않아도 아마 모두들 느낄 것이다.. 이제 네트워크에 연결되지 않은 PC는 컴퓨터가 아닌 세상이 되었다.. 나홀로 PC 시대와 다르게 이러한 패러다임의 변화로 인해 크게 야기되고 있는 문제가 바로 보...
읽기만 해도 내공이 파~팍 쌓입니다.
이랑혁님이 쓰신 서평보기 I 평점 I 조회수(992) I 공감 (0) I 블로그
읽으면 자동적으로 내공이 쌓이는 책입니다.윈도우 프로그래밍을 1년이상 해보신분들에게 권해 드리고 싶군요.
마인드!! 마인드!!
김용환님이 쓰신 서평보기 I 평점 I 조회수(2166) I 공감 (0) I 블로그
회사에서 듣는 말중에 하나가 바로 마인드다~ ^^마인드를 가져야 한다!! ㅋㅋ  개발하는 가운데. 팀원들끼리의 공유와 이해, 목표를 향한 끊임없는 욕구와 정열, 정확한 목표의식을 마인드라는 평범한(?) 단어를 통해 분출되는게 아닐까 싶다.. 어제 밤새도록 이책을 읽고난뒤.. 막상 서평을 쓰려고 하니, 문득 마인드라는 단어가 떠올랐다.. 그만큼 제품을 만든다는 것은 마인드가 그만큼 중요하고, 그 마인드를 통해 개발철학이 만들어지는것이 아닐까? 하는 생각이 들면서...
Chapra의 응용수치해석...
Steven C. Chapra
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
응용 운영체제 개념...
Abraham Silberschatz, Peter B. Galvin, Greg Gagne
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
만들면서 배우는 Git + GitHub 입문...
윤웅식
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(39)
회원평점   회원서평수 3
안전한 코드 작성을 위한 지침서..
오광섭 님  2008-06-23
읽기만 해도 내공이 파~팍 쌓입니다.
이랑혁 님  2006-03-09
마인드!! 마인드!!
김용환 님  2004-06-01
박선미 의 최근 저서
 
다문화교육연구의 경향과 쟁점
18,900원
(10%↓+1%)
 
다문화교육연구의 이론과 적용
18,900원
(10%↓+1%)
 
마이클 하워드 의 최근 저서
 
윈도우 시스템 보안과 해킹 세트 - 전2권
43,200원
(10%↓+5%)
 
박선미 의 최근 저서
 
사회과 평가론
16,490원
(3%↓+3%)
 
마이클 하워드 의 최근 저서
 
윈도우 비스타 보안 프로그래밍
22,500원
(10%↓+5%)
 
정보문화사 출판사의 신간
미래의 핵심 기술
Mitsumura Naoki 저
16,200원
(10%↓+5%)
 
화이트 해커를 위한 암호와 해킹 2판(White Hat Python)
장삼용 저
20,700원
(10%↓+5%)
 
회사 실무에 힘을 주는 엑셀&파워포인트 2019
서정아, 김은정 저
16,200원
(10%↓+5%)
 
수학적 사고력 향상을 위한 파이썬 코딩 수학 with 딥러닝
박 경 원 저
13,500원
(10%↓+5%)
 
블록체인 프로젝트(BlockChain Project)
박정태 저
22,500원
(10%↓+5%)
 
이메일주소수집거부