이미 소장하고 있다면 판매해 보세요.
|
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 가비지 수집기를 위해 지역 레퍼런스 변수에 널을 설정하려고 하지 말라 |
Robert C. Seacord
로버트 C. 시코드의 다른 상품
조태남의 다른 상품
|
이 책은 전문가를 위한 가이드라인과 권고사항, 그리고 이러한 요구사항을 준수하도록 도와주는 예제들을 제공한다.
75개의 가이드라인들은 일관성 있고 직관적인 방법으로 기술되었다. 각 가이드라인에 대하여 준수해야 하는 요구사항들이 기술되며, 대부분의 요구사항들은 적절하지 못한 코드 예와 적절한 솔루션들과 함께 제공된다. 저자들은 각 가이드라인이 언제 적용되는지 설명하고 있으며 좀 더 상세한 정보를 얻기 위한 참고자료도 제공한다. 이 책은 최신의 자바 보안 연구를 반영하여, 계획적인 공격이나 예상하지 못한 결과를 방지하기 위한 새로운 기술들을 제공한다. 코드의 신뢰성과 명확성을 개선하는데 있어서 최고의 실질적인 도움을 얻게 될 것이다. 불완전한 모드를 초래하는 일반적인 오해에 대해서는 별도의 장을 할애하여 설명하였다. |