맞는데 왜 틀릴까..?

Java/Secure Coding 13

[Secure Coding] 클라이언트에 암호화되지 않은 민감-데이터를 저장하지 말라

클라이언트-서버 모델을 사용하는 응용프로그램을 작성할 때, 사용자 인증 정보와 같은 민감-데이터를 클라이언트 측에 저장하면, 클라이언트가 공격에 취약할 경우에 허가되지 않은 방법으로 민감-데이터가 노출될 수 있다. 민감-데이터 사용자 이름, 패스워드, 신용 카드 번호 등 사용자 개인을 식별할 수 있는 기타의 정보 쿠키(cookie) 웹 응용프로그램에서 이 문제에 대한 가장 보편적인 완화책 짧은 문자열로 구성되어 있고, 만약 민감-데이터를 포함하고 있다면(remember-me 기능) 암호화되어야만 한다. 쿠키를 클라이언트에게 제공하고 민감-데이터는 서버에 저장 쿠키는 웹서버에 의해 생성되고 일정 기간 동안 클라이언트에 저장됨. 클라이언트가 서버에 다시 연결할 때, 클라이언트가 서버에게 자신을 식별하도록 하..

Java/Secure Coding 2023.08.03

[Secure Coding] 민감-데이터의 수명을 제한하라

메모리에 있는 민감-데이터(sensitive data)는 오염되기 쉽다. 메모리가 사용 후 삭제되지 않는 데이터를 포함한 경우에 민감-데이터 누출의 가능성이 더 높아진다. 노출의 위험을 제한하기 위해서 프로그램은 민감-데이터의 수명을 최소화해야 한다. 공격자의 민감-데이터 엑세스 동일한 시스템에서 응용 프로그램을 수행할 수 있는 공격자는 응용프로그램이 다음과 같을 때 민감-데이터에 엑세스할 수 있다. 사용 후에 내용이 삭제되지 않거나 garbage-collection 되는 객체에 민감-데이터를 저장하여 사용할 때 운영체제에 의해 디스크로 스왑아웃될 수 있는 메모리 페이지를 포함할 때 (메모리 관리 작업이나 최대절전모드를 위해) OS 캐시나 메모리에 있는 데이터의 복사본을 가지고 있는 버퍼(buffered..

Java/Secure Coding 2023.07.24

[Secure Coding] Chap1. 안전성

기업 자바 응용프로그램은 신뢰할 수 없는 입력을 수용해야 하고, 복잡한 서브시스템과 상호작용해야 하기 때문에 공격당하기 쉽다. 만약 응용프로그램 안에 사용된 컴포넌트들이 공격당하기 쉬운 경우라면, 응용프로그램에 대한 인젝션 공격 (크로스-사이트 스크립팅(XSS), XPath와 LDAP 인젝션 등)이 가능하다. 이를 완화하는 효과적인 전략은 번역되기 전에 입력을 화이트리스트(Whitelist)화하고 출력을 인코딩하거나 이스케이핑(escaping) 하는 것이다. 1 챕터 안전성은 자바 기반의 응용프로그램에 대하여 안전성을 보장하기 위한 가이드라인을 기술한다. 민감한 데이터 다루기 일반적인 인젝션 공격 피하기 보안성을 해치도록 오용될 수 있는 언어적 특징 자바의 섬세한 보안 메커니즘의 세부사항 입력 데이터 화..

Java/Secure Coding 2023.07.24