서브메뉴

본문

실무에 바로 적용하는 해킹 방어를 위한 JAVA 시큐어코딩
실무에 바로 적용하는 해킹 방어를 위한 JAVA 시큐어코딩
저자 : 김영숙
출판사 : 오픈이지북스
출판년 : 2017
ISBN : 9791195334247

책소개

[해킹 방어를 위한 JAVA 시큐어코딩]은 실무에 바로 적용 가능한 JAVA 시큐어코딩을 학습할 수 있도록 현업에서 사용하는 개발 플랫폼(JAVA,Spring,,MyBatis,MySQL)을 기반으로 실습할 수 있게 구성하였다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

왜 개발자들에게 시큐어코딩을 요구할까?
어쩌면 개발자들은 정해진 기간 내에 사용자들이 요구하는 기능을 구현하는 것도 버거운 사 람들이다. 언제나 주어진 시간은 턱없이 부족하다. 항상 책정된 비용은 적기만 하다. 그래서 많은 개발자들이 애플리케이션을 개발하다 보면 요구되는 기능을 구현하는 데 급급하게 되 고, 프로그램이 잘 실행되어 원하는 결과가 나올 수 있는 입력 값만으로 테스트가 이뤄지기도 한다.

공격자들은 최소한의 노력으로 최대한의 이익을 얻으려고 한다
공격자들은 예전과 다른 환경에 직면했다. 대부분의 포트들은 방화벽에서 차단된다. 대부분 의 시스템은 서비스에 필요한 최소한의 프로세스만 실행시킨다. 많은 시스템 애플리케이션 은 실시간 패치 관리 같은 보안 솔루션으로 철저하게 관리된다. 그러다 보니 공격자들은 좀 더 쉽게 시스템을 공격할 수 있는 방법을 찾게 되었다. 눈을 조금만 돌려보니 기능 구현에 급 급했던 사용자 애플리케이션에서 취약점을 쉽게 발견할 수 있었던 것이다. 통계자료에서도 확인할 수 있듯이, SQL 삽입(Injection) 공격이나 XSS 공격, 세션 하이재킹 공격들이 나날이 늘어가는 것은 공격자의 눈에는 사용자 애플리케이션이 손쉬운 공격 대상이라는 의미와 통 한다.

다시, 왜 개발자들에게 시큐어코딩을 요구할까?
많은 애플리케이션 공격 기법들을 분석해보면 사용자의 입력 값을 애플리케이션에서 제대 로 검증하지 않고 사용해 DB 정보가 유출되거나, 시스템에 명령을 수행할 수 있는 쉘 환경 을 공격자에게 넘겨주거나, 일반 사용자들이 피싱 사이트로 자신도 모르게 넘어가도록 유도 하고 있었다. 이러한 것들은 어쩌면 보안 제품으로 모두 방어하기가 어렵다. 다시 말해 개발 자들이 자신이 개발하는 애플리케이션에서 외부 입력 값들을 잘 정제해 사용하도록 프로그 램을 작성해야만 한다는 것이다. 또는 에러가 발생한 경우 프로그램에서 제대로 에러를 처 리함으로써 이차적인 문제가 발생하지 않도록 해야 한다. 인증된 사용자가 인가된 기능이나 리소스만을 사용하도록 프로그램이 작성되었다면 보안 사고는 일어나지 않을 수 있다. 그래 서 최근 들어 많은 기업들이 개발자들로 하여금 안전한 프로그램의 작성을 위해 보안 침해 사고의 개념과 발생 원인에 대해 학습할 것을 주문하고, 이것을 프로그램에서 제거할 수 있 도록 요구하고 있는 것이다.

그럼 개발자만 시큐어코딩을 하면 되나?
그렇지 않다. 시큐어코딩은 협의적인 의미로는 개발 단계에서 개발자들이 취약점이 발생하 지 않도록 프로그램을 작성한다는 개념이다. 하지만 좀 더 광역적인 의미에서 보면, 소프트 웨어 개발 생명주기(Life Cycle) 전 단계에 걸쳐서 애플리케이션이 취약점을 가지지 않도록 요구사항을 수집해 분석하는 분석가, 설계를 담당하는 설계자, 애플리케이션을 테스트하는 테스터, 그리고 운영자 및 사용자 모두가 각각의 직무에 맞는 보안 활동을 수행해야만 안전 한 소프트웨어를 개발하고 운영할 수 있다는 것을 강조하는 개념이다.
[교보문고에서 제공한 정보입니다.]

목차정보

Part 1. 안전한 소프트웨어 개발 방법론
Chapter 1. 시큐어코딩의 개요
1. 소프트웨어 개발보안의 필요성
네트워크 보안
시스템 보안
애플리케이션 보안
2. 침해 사고 사례
보안 사고 사례
3. 보안취약점 정보 활용
CWE
SANS
CVE
CERT
OWASP
4. 행정자치부 소프트웨어 개발보안 가이드
설계 단계 보안요구항목
구현 단계 보안약점
구현 단계 보안약점과 설계 단계 보안요구항목의 연관 관계

Chapter 2. 개발보안 방법론
1. 소프트웨어 개발보안 방법론
2. MS-SDL
3. Seven Touchpoints
4. OWASP CLASP
개념 뷰(Concepts View)
역할 기반 뷰(Role-based View)
활동 평가 뷰(Activity-Assessment View)
활동 구현 뷰(Activity-Implements View)
취약성 뷰(Vulnerability View)
5. 안전한 소프트웨어 개발ㆍ도입을 위한 보안가이드
시작 단계 보안 프로세스
분석 단계 보안 프로세스
설계 단계 보안 프로세스
구현 단계 보안 프로세스
시험 단계 보안 프로세스

Part 2. 안전한 소프트웨어를 만드는 시큐어코딩 기법
Chapter 3. 웹 애플리케이션 보안을 위한 기본 지식
1. 실습 환경 구축
실습 환경 다운로드 및 설치
프록시 툴 Paros 다운로드 및 설치
2. HTTP와 웹 구조
웹 애플리케이션 서버와 웹 프레임워크 구조의 이해
HTTP 구조
3. 인증과 인가
웹 인증 방식
세션을 사용하지 않는 HTTP 인증
세션을 사용하는 HTTP 인증
4. 세션과 쿠키
세션
쿠키
5. 인코딩 스키마
ASCII
URL 인코딩
HTML 인코딩
Base64 인코딩
6. 정규식
자바스크립트에서 정규식 사용하기
자바 프로그램에서 정규식 사용하기
7. 로그 관리와 로그 분석
W3C 포맷
NCSA 포맷
분석 툴을 이용한 로그 분석

Chaper 4. 보안취약점 제거를 위한 코딩
1. 입력값 검증 부재와 삽입
SQL 삽입
운영체제 명령어 삽입
XPath 삽입
LDAP 삽입
SOAP 삽입
2. 세션 및 인증 관리 취약
세션 관리
인증 관리
3. 크로스 사이트 스크립팅
4. 크로스 사이트 요청 위조
5. 파일 업로드/다운로드 취약점
6. 중요 정보 노출
암호화 정책과 안전한 DB 데이터 관리
민감한 데이터 노출
7. 파라미터 조작과 잘못된 접근제어
8. 안전하지 않은 리다이렉트와 포워드
9. HTTP 응답 분할
10. 잘못된 보안 설정
디렉토리 리스팅
에러 노출
디폴트 설정 노출
취약한 컴포넌트 사용

Chapter 5. 안전하지 않은 코딩 스타일
1. 안전하지 않은 예외 처리
오류 메시지를 통한 정보 노출
오류 상황 대응 부재
부적절한 예외 처리
2. 널 포인트 역참조
3. 정수 오버플로우
4. 스레드 공유 데이터에 대한 동기화 처리 부재
5. 캡슐화 위배
6. 잘못된 API 사용
7. 민감한 데이터에 접근하는 내부클래스
8. System.exit() 사용
9. 배포시 제거되지 않고 남아 있는 코멘트 또는 디버깅 코드

Part 3. 소프트웨어 보안 강화 기법
Chapter 6. 오픈소스 보안 라이브러리 활용
1. ESAPI를 이용한 보안 강화
ESAPI 개요
ESAPI 라이브러리 활용
사용자(User)와 인증 처리(Authenticator)
HTTP Session 관리(HTTPUtilities)
입력값 유효성 검증(Validator)과 인코딩(Encoder)
액세스 제어(AccessController)
액세스 참조맵(AccessReferenceMap)
암호화(Encryptor)
로깅(Logging)
침입탐지(IntrusionDetector)
예외 처리(Exception Handling)

Chapter 7. 보안약점 진단 도구 활용
1. 보안약점 진단 도구
2. 정적 분석
정적 분석 개요
FindBugs와 FindSecurityBugs 를 이용한 정적 분석
정적 분석 결과 보고서
3. 동적 분석
동적 분석 개요
Paros를 이용한 동적 분석
OWASP ZAP을 이용한 동적 분석
[교보문고에서 제공한 정보입니다.]