본문 바로가기
728x90

전체 글118

Spring - 외부 설정 외부 설정코드 내의 변수를 외부에서 가져오려면 외부 설정을 사용해야한다.외부 설정으로부터 값을 가져오는 방법에는 여러가지가 있다.OS 환경변수자바 시스템 속성커맨드 라인 인수그리고 이 세가지를 통합하여 사용하는 방법에 대해서 알아보겠다.OS 환경변수OS Environment variablesOS에서 지원하는 외부 설정으로, 해당 OS를 사용하는 모든 프로세스에 적용된다.윈도우는 cmd에서 set 명령어로 설정된 환경변수를 확인할 수 있다.환경변수 편집시스템 환경 변수 편집 - 환경 변수에서 확인 및 편집이 가능하다.자바에서 사용자바에서 환경변수를 사용하려면, System.getenv()로 사용할 수 있다. Map envMap = System.getenv(); String username = envMap... 2024. 11. 13.
Spring - WAR, JAR, Executable JAR 인프런 김영한 강사님 강의를 듣고 정리한 내용입니다.WARWeb Application ArchiveWAR는 WAS(Web Application Server)에 배포할 때 사용하는 압축 파일이다. WAS 위에서 동작하고, HTML과 같은 정적 리소스와 클래스 파일을 모두 포함한다. 그리고 JAR에 비해서 구조가 더 복잡하다.WAR 구조jar -xvf 파일명.war로 압축을 풀어서 구조를 확인할 수 있다.WEB-INFclasses : 실행 클래스 모음(자바 클래스)lib : 라이브러리 모음web.xml : 웹 서버 배치 설정 파일(생략 가능)그 외 정적 리소스 (HTML, css ...)라이브러리 모음에서 외부 라이브러리를 jar 형식으로 포함시킬 수 있다.빌드와 배포빌드프로젝트 폴더에서./gradlew c.. 2024. 11. 13.
스프링 - Bean 등록(자동, 수동)과 Lite vs Full mode 스프링 빈의 등록자동 등록 - @Component빈의 자동등록은 컴포넌트 스캔을 거쳐서 이루어진다.클래스 상단에 @Component 어노테이션이 있으면 컴포넌트 스캔을 거쳐서 스프링 빈으로 자동등록 된다. 이 밖에도 @Component를 포함하는 @Controller, @Service, @Repository도 자동등록된다. 생성자 위에 @Autowired 어노테이션을 붙여서 의존관계 주입이 가능하고, 해당 클래스의 생성자가 하나 뿐이라면 @Autowired는 생략 가능하다. 예를 들어 @RestController는 @RequestMapping에 @Responsebody를 추가한 기능을 한다. 그럼에도 @RequestMapping + @Responsebody 와 @RestController 사이에는 차이가.. 2024. 11. 12.
Spring - 중복 제거를 위한 디자인 패턴 인프런 김영한 강사님 강의를 듣고 정리한 내용입니다.  중복 제거를 위한 디자인 패턴여러 개의 메서드에서 공통된 부분이 발생될 때 그 부분을 메서드로 뽑아낸다. 하지만 중간에 비즈니스 로직이 끼어있고 시작과 끝부분이 같다면 이를 메서드로 뽑아내기 곤란하다. 이때 사용할 수 있는 여러개의 디자인 패턴에 대해서 소개한다.핵심 기능과 부가 기능이 디자인 패턴들의 공통된 특징은 메서드를 핵심 기능(중간)과 부가 기능(시작과 끝)으로 분리한다는 것이다. 그리고 여러개의 메서드에서 중복되어 발생하는 부가 기능을 위한 메서드를 만든다.웹에서 헤더와 메인 그리고 푸터로 분리하는 것과 비슷하다.핵심 기능은 메인과 비슷하고, 부가 기능은 헤더, 푸터와 비슷하다.핵심 기능해당 객체가 제공하는 고유의 기능부가 기능핵심 기능을.. 2024. 11. 12.
Spring - Thread Local로 동시성 문제 해결 인프런 김영한 강사님의 강의를 듣고 정리한 내용입니다.동시성 문제하나의 데이터에 여러개의 쓰레드가 접근하여 값을 변경하게 되는 경우, 의도하지 않은대로 동작할 수 있다. 이를 동시성 문제라고 한다.(읽기만 할 때는 발생하지 않는다.)동시성 문제는 지역변수에서는 발생하지 않는다. 지역 변수는 쓰레드마다 각각 다른 메모리 영역이 할당된다.그 이유는 쓰레드마다 각각의 스택 영역이 부여되기 때문이다. 스택에 메서드들이 호출되어 쌓이면, 메서드 내부의 지역 변수들은 각각의 스택 공간에 할당된다.하지만 인스턴스의 필드는 힙 영역에 할당되고 모든 쓰레드는 같은 힙 공간을 참조하게 된다. 그러므로 필드로 관리하는 경우에는 여러 쓰레드가 접근할 경우 동시성 문제가 발생한다.동시성 문제가 발생하는 곳은 같은 인스턴스의 필.. 2024. 11. 12.
Spring - 컨테이너와 빈(Bean) 인프런 김영한 강사님의 강의를 듣고 정리한 내용입니다.스프링 컨테이너IoC기존의 프로그램에서는 일반적인 객체가 제어 흐름을 조종하게 된다. 제어 흐름은 생성, 연결, 실행, 소멸을 의미한다. 제어 권한이 개발자에게 있다.IoC는 Inversion of Control의 준말로, 제어의 역전을 의미한다.IoC는 제어 권한이 개발자에게 쥐어지지 않는다.(즉, 일반적인 객체가 제어 흐름을 조종할 수 없게 된다.)모든 제어 권한을 IoC 컨테이너가 쥐게 된다. 일반적인 객체들은 제어에 관여하지 않고 로직만을 수행하게 된다.스프링을 사용하는 경우에는, 제어의 권한이 스프링 프레임워크에게 쥐어지고 IoC 컨테이너가 모든 제어를 관리하게 된다.DIDependency Injection의 준말로, 의존 관계 주입을 의미한.. 2024. 11. 12.
정보보안, 네트워크 - 무선랜 보안 취약점 무선랜의 보안 취약점물리적 보안 취약점도난 및 파손구성설정 초기화전원 차단LAN 차단SSID 및 암호 유출기술적 보안 취약점암호화 하지 않은 통신 데이터에 대한 도청 (WEP > WPA > WPA2)무선전파 전송 장비에 대한 서비스 거부 공격 (SSID를 포함한 Probe Request)불법 AP를 통한 전송 데이터 수집관리적 보안 취약점무선 AP 장비에 대한 관리 미흡 : 파손, 도난, 개수, 불법설치 등에 대한 파악 부족사용자의 보안의식 부족 : AP의 보안기능 미설정, AP 관리 페이지의 Default 비밀번호 사용 등전파 출력 관리 부족 : 워드라이빙으로 전파 수신, 중심 주파수 기준 3개 채널까지 전파 간섭 발생 등(인접한 AP들 간에는 채널을 서로 다르게 설정해야할 필요가 있)망분리주로 공공기.. 2024. 11. 12.
정보보안 - SALT, 시큐어코딩 🧂SALT정보보안에서 비밀번호에만 해쉬함수를 적용할 경우 레인보우 공격 등에 취약함💡 SALT 값을 비밀번호에 덧붙여 해쉬함수를 적용하고, SALT값은 안전하게 보관+) SHA-256 이상의 안전한 해쉬함수 적용 필요🛡️시큐어코딩안전한 소프트웨어 개발을 위해 소스 코드 등에 존재할 수 있는 잠재적인 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동시큐어코딩 가이드 종류소프트웨어 개발 보안 가이드JAVA 시큐어코딩 가이드C 시큐어코딩 가이드Android-JAVA 시큐어코딩 가이드상대 디렉토리 경로 조작외부의 입력을 통하여 “디렉토리 경로 문자열” 생성이 필요한 경우, 외부 입력 값에 대해 경로 조작에 사용될 수 있는 문자열을 필터링.. 2024. 11. 12.
728x90