책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > OS/Networking > 네트워크 보안/해킹
· ISBN : 9791185578156
· 쪽수 : 288쪽
책 소개
목차
Chapter 01 안정성
01 민감-데이터의 수명을 제한하라
02 클라이언트에 암호화되지 않은 민감-데이터를 저장하지 말라
03 민감한 가변적 클래스에 수정이 불가능한 래퍼를 제공하라
04 보안에 민감한 메서드들이 검증된 매개변수를 가지고 호출되도록 보장하라
05 마구잡이 파일 업로드를 방지하라
06 출력을 적절하게 인코딩하거나 이스케이핑하라
07 코드 인젝션을 방지하라
08 XPath인젝션을 방지하라
09 LDAP인젝션을 방지하라
10 비신뢰-메서드의 매개변수를 clone()메서드로 복제하지 말라
11 암호키를 Object.equals()로 비교하지 말라
12 안전하지 않거나 약한 암호 알고리즘을 사용하지 말라
13 해시 함수를 이용하여 패스워드를 저장하라
14 SecureRandom에 적절한 시드를 제공하도록 보장하라
15 비신뢰-코드가 오버라이드할 수 있는 메서드에 의존하지 말라
16 과도한 권한 승인을 삼가라
17 특권-코드를 최소화하라
18 비신뢰-코드에게 간소화된 보안검사를 하는 메서드를 노출하지 말라
19 섬세한 보안을 위해 맞춤형 보안 퍼미션을 정의하라
20 보안 관리자를 이용하여 안전한 샌드박스를 생성하라
21 비신뢰-코드가 콜백 메서드의 권한을 오용하지 못하도록 방지하라
Chapter 02 방어적 프로그래밍
22 변수들의 영역범위를 최소화하라
23 @SuppressWarnings주석의 범위를 최소화하라
24 클래스와 멤버들에 대한 접근성을 최소화하라
25 쓰레드-안정성을 문서화하고 적절한 곳에 주석을 사용하라
26 메서드의 결과값에 대해 항상 피드백을 제공하라
27 여러 가지 파일 속성을 이용하여 파일을 식별하라
28 enum에서 부여한 순서번호에 의미를 두지 말라
29 숫자의 확대변환 동작을 주의하라
30 가변형 매개변수의 타입에 대해 컴파일 검사를 시행하라
31 이후의 릴리즈에서 변경될 수 있는 상수에 public final을 사용하지 말라
32 패키지간의 순환적 종속성을 피하라
33 일반적인 예외 타입보다는 사용자-정의 예외를 사용하라
34 시스템 오류로부터 정상적으로 복구하도록 노력하라
35 릴리즈하기 전에 인터페이스를 신중하게 설계하라
36 가비지 수집-친화적 코드를 작성하라
Chapter 03 신뢰성
37 부분영역의 식별자들을 섀도잉하거나 차폐하지 말라
38 하나의 선언문에 두 개 이상의 변수를 선언하지 말라
39 프로그램에서 리터럴을 표현할 때 의미있는 심볼릭 상수를 사용하라
40 상수 정의에서 관계를 적절히 인코딩하라
41 배열이나 컬렉션을 반환하는 메서드에서 널 값 대신 빈 배열이나 컬렉션을 반환하라
42 예외적 상황에 대해서만 예외를 사용하라
43 닫을 수 있는 자원을 안전하게 처리하기 위해서는 자원동반-try문장을 사용하라
44 런타임 오류가 없음을 검증하는 용도로 가정검증을 사용하지 말라
45 조건식에서 두 번째와 세 번째 피연산자의 타입을 동일하게 사용하라
46 다이렉트 핸들을 시스템 자원으로 직렬화하지 마라
47 열거형보다는 반복자를 사용하라
48 수명이 짧고 사용빈도가 낮은 객체용으로 다이렉트 버퍼를 사용하지 말라
49 장기 컨테이너 객체로부터 단기 객체를 삭제하라
Chapter 04 프로그램 이해용이성
50 시각적으로 오해의 소지가 있는 식별자와 리터럴 사용에 주의하라
51 가변형 메서드의 모호한 오버로딩을 삼가라
52 인밴드 오류 지표를 삼가라
53 조건식에서 대입문을 실행하지 말라
54 if, for, while문의 몸체에 중괄호를 사용하라
55 if, for, while조건식 직후에 세미콜론을 입력하지 말라
56 case레이블에 연계된 모든 문장은 break문으로 마무리하라
57 반복문 카운터의 부주의한 순환을 피하라
58 연산의 우선순위를 위해 괄호를 사용하라
59 파일 생성에 관하여 가정하지 말라
60 실수 연산을 위해서는 정수를 실수로 변환하라
61 clone()메서드가 super.clone()을 호출하도록 보장하라
62 가독성 있고 일관된 주석을 사용하라
63 과도한 코드와 값을 찾아 제거하라
64 논리적 완벽을 추구하라
65 모호하거나 혼동되는 오버로딩의 사용을 피하라
Chapter 05 프로그래머의 오해
66 레퍼런스를 휘발성으로 선언하면 참조되는 객체 멤버의 안전한 공개가 보장된다고 가정하지 말라
67 sleep(), yield(), getState()메서드가 동기화를 제공한다고 가정하지 말라
68 정수형 피연산자에 대한 나머지 연산 결과는 항상 음수가 아니라고 가정하지 말라
69 추상 객체의 동등성과 래퍼런스의 동등성을 혼동하지 말라
70 비트 연산자와 논리 연산자의 차이를 이해하라
71 문자열이 로드될 때 이스케이프 문자들이 어떻게 해석되는지 이해하라
72 런타임 시의 타입으로 구분되도록 오버로드 메서드를 사용하지 말라
73 레퍼런스의 불변성과 참조되는 객체의 불변성을 절대 혼동하지 말라
74 직렬화 메서드인 wirteUnshared()와 readUnshared()의 사용을 주의하라
75 가비지 수집기를 위해 지역 레퍼런스 변수에 널을 설정하려고 하지 말라