spring (26) 썸네일형 리스트형 웹 어플리케이션 보안 취약성 공격자는 공격을 시작하기 전에 애플리케이션의 취약성(Vulnerability)을 파악하고 공략해야 함≫ 취약성 : 악의적 의도를 가지고 원치 않는 작업을 수행하는 데 이용할 수 있는 약점 인증과 권한 부여의 취약성인증 (Authentication) : 애플리케이션이 이를 이용하려는 사람을 식별하는 프로세스어떤 사용자나 존재가 앱을 이용하려고 하면 추가 접근을 허가하기 전에 먼저 이들의 ID를 확인해야 함실제 앱에서는 익명 액세스를 지원할 때도 있지만 대부분은 식별된 사용자만 데이터를 이용하거나 특정 작업을 수행할 수 있음권한부여 또는 인가 (Authorization) : 인증된 호출자가 특정 기능과 데이터에 대한 이용 권리가 있는지 확인하는 프로세스예) 대부분의 인증된 사용자는 자금을 이체할 수 있지만 .. HTTPS vs HTTP HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)≫ 웹 서버와 클라이언트 간에 데이터를 교환하는 데 사용되는 프로토콜≫ 웹 브라우저(클라이언트)와 웹 서버 간의 통신을 가능하게 하여 사용자가 웹 페이지를 요청하고 서버로부터 그 페이지를 전달받을 수 있도록 함≫ 교환되는 데이터 : 주로 HTML 문서, 이미지, 비디오 등 웹 리소스 : 두 프로토콜의 주요 차이점은 HTTPS가 보안을 제공한다는 것 ! HTTP정의 : 웹 상에서 정보를 교환하기 위한 기본 프로토콜보안 : 암호화되지 않은 텍스트로 데이터를 전송 → 전송 중인 데이터를 도청하거나 수정할 수 있는 취약성이 있음포트 : 기본적으로 80번 포트 사용용도 : 단순한.. 로깅(Logging) 로깅의 필요성애플리케이션 디버깅, 문제 해결, 모니터링, 에러 리포트를 위한 필수 도구!예) 디버깅 - 고객의 문제 상황을 개발 환경에서 에러 재현할 수 없는 경우도 있음디버거 만으로는 한계가 존재로그를 사용하면 로그를 기록하는 상황에 따라 커스터마이징, 정보를 간략하게 혹은 더 상세하게 표시할 수 있게 구성이 가능함대표적인 로깅 요소에러예상하지 않은 동작 (버그)애플리케이션 변경 추적주요 이벤트 (서비스 / 모듈 시작과 종료, 로그인 등) 알림제대로 서비스가 동작하고 있는지에 대한 정보성 알림 무엇을 기록할 것인가? - 로그 콘텐츠항목세부 내용Error메시지, 스택 추적, 에러 발생 시 애플리케이션이 실행하고 있던 작업Debugging디버깅 시 필요한 세부 추적 정보적용되는 변수 값, 메서드 등 실행에.. 영속성 전이 영속성 전이 (cascade)특정 엔티티끼리 생명주기가 같은 경우가 있음예) 글(post)이 삭제되는 경우 글에 달린 댓글(comment)들은 독립적으로 존재할 수 없기 때문에 글이 삭제될 때 같이 삭제되어야 함엔티티 생명주기가 다른 엔티티와 연관되어 있는 경우 영속성 전이(cascade)를 사용해 관리@ManyToOne(cascade=CascadeType.ALL) 엔티티 생명주기 영속성 전이 타입 종류종류설명ALL모든 작업(상태)에 대해 영속성 전이PERSISTPersist할 때 연관된 엔티티도 PersistMERGE엔티티를 영속성 컨텍스트에 Merge할 때 연관 엔티티도 MergeREMOVEDB와 영속성 컨텍스트에서 연관 엔티티도 제거REFRESH엔티티 새로고침 시 연관 엔티티도 새로고침DETACH엔.. 다대일 단/양방향 매핑 다대일(N:1) 단방향 매핑 예)1. 댓글(comment)들은 하나의 글(post)에 달려있음 (댓글 N : 글 1)2. 댓글을 조회했을 때, 댓글이 속해있는 글도 같이 조회됨3. 글을 통해 댓글에 접근할 수 없음comment 엔티티에 매핑 설정을 추가글(post) 객체는 댓글(comment)로부터 참조 당하는 것, 참조할 필요 없으므로 추가할 설정은 없음 다대일(N:1) 양방향 매핑 예)1. 댓글(comment)들은 하나의 글(post)에 달려있음 (댓글 N : 글 1)2. 댓글을 조회했을 때 댓글이 속해있는 글도 같이 조회됨3. 글을 통해서도 댓글에 접근할 수 있음mappedBy="post" ≫ "post"는 comment의 post 필드 양방향 매핑과 주인 (owner)누가 FK를 관리(등록/수정).. 연관관계 매핑 종류 / 방향 객체지향에서는 여러 객체에 나누어 객체 간 협력을 하며 기능≫ 객체들을 서로 연결할 수 있도록 객체 간 참조 사용!≫ 객체지향과 DB 간의 차이 발생객체지향 : 객체 간 참조를 사용해 객체들을 연결DB : 테이블의 외래키를 사용해 정규화 연관관계 매핑JPA에서 성능을 결정하는 중요한 요소연관관계 설정을 통해 객체 '참조'와 테이블의 FK를 매핑시켜 사용방향성(Direction), 다중성(Multiplicity) ≫ 두 가지 기준 존재 방향성 (Direction)방향설명단방향두 엔티티 관계에서 한쪽 엔티티만 참조양방향두 엔티티 관계에서 양쪽 엔티티가 서로 참조: A → B, B → A 예)1. 게시글 객체가 참조 변수를 통해 댓글 객체만 참조하면 ≫ 단방향 2. 댓글 객체도 게시글 객체를 참조 변수를 통.. JPA Auditing / Base Entity Audit엔티티와 관련된 이벤트를 추적하고 기록Audit (감사) : '감독하고 검사함'Entity 버전 관리와 관련된 이벤트를 추적하고 기록하는 것이벤트 : Entity의 Create, Update, Delete와 같은 작업 Audit 구현하기Spring Data JPA는 @EntityListeners 어노테이션을 사용해 자체 JPA 엔티티 리스너 클래스인 AuditingEntityListener를 제공@EnableJpaAuditing과 @EntityListeners(AuditingEntityListener.class) 설정≫ 이벤트 리스너가 Content에 대한 정보를 Auditing할 수 있게 됨 SpringBootApplication(PostApplication.java 파일)에 @EnableJp.. Lombok Lombok반복되는 코드를 줄이기 위한 Java LibraryJava 라이브러리로 getter, setter, 생성자 등 반복적으로 쓰이는 코드들을 어노테이션 만으로 쉽게 설정 가능하게 함Lombok을 사용하기 위해서는 Gradle Dependency에 추가해야 함 Lombok 프로젝트에 적용하기Gradle 설정 파일 (build.gradle)에 추가원하는 class 위에 Lombok 어노테이션을 붙이면 자동으로 컴파일 시 생성됨예) getter 메소드 (public Long getId{})를 @getter로 대체 가능@Getter : 필드 모두에 Getter를 생성@Setter : 필드 모두에 Setter를 생성@NoArgsConstructor : Argument가 없는 생성자 코드 생성 많이 쓰이는 .. 이전 1 2 3 4 다음