분류 전체보기124 [JAVA] 메서드 체이닝 만들기 (빌더 패턴) public class ChanningClass { public final String status; private ChanningClass(String status){ this.status = status; } // BuildersImpl 인스턴스를 처음 생성할 메서드가 필요하다. public static Builders startMethod() { return new BuildersImpl(); } // Builder 인터페이스 interface Builders{ Builders method1(String doSomething); Builders method2(String doSomething); ChanningClass build(); } // Builder 구현체 private static cla.. 2022. 8. 26. [Spring] REST API REST(Represetational State Transfer) 기술이 아닌 약속이다. 요청에 대한 JSON 또는 XML형식으로 자원의 상태 응답 자원(데이터)의 상태를 주고 받는 것 특징 Client, Server 구조 / 클라이언트는 요청하고, 서버는 응답하는 구조 Stateless / 서버에서는 클라이언트의 상태 값을 저장하지 않는다. (인증, 인가에 JWT 사용) HTTP 프로토콜을 이용해서 JSON 데이터를 응답으로 주기 때문에 어플리케이션의 통합과 분리가 용이하다. 규약 자원의 식별 - URL로 자원을 구분, 식별 메세지를 통한 리소스 조작 - HTTP header에 자원의 타입을 명시, 데이터 일부를 메세지로 전달 자기 서술적 메세지 - 요청하는 데이터가 HTTP methods 중 무엇인지.. 2022. 8. 26. [Web 보안] XSS, CSRF XSS(Cross-Site Scripting) (사용자가 사이트를 신뢰한다는 점을 이용) 스크립트 삽입 공격 방식 JS 스크립트는 어느위치에 있던 동작하기 때문에 공격자가 스크립트 코드가 포함된 게시글을 작성하여 등록 일반 사용자가 해당 글을 클릭하면 script가 동작하여 이루어지는 공격 방식 무조건 Secure Coding을 해줘야 한다. 대응 - Secure coding , = 과 같은 입력값에 공격에 사용될만한 문자가 있다면 치환하여 사용, DB에 저장한다. Sql Injection도 비슷한 방식으로 대응할 수 있다. - HttpOnly Secure coding이 적용되어 있지 않아 스크립트가 동작 쿠키 탈취 시도 시 쿠키가 HttpOnly 설정이 되어있다면 js로 쿠키를 읽어낼 수 없다. CSR.. 2022. 8. 25. [Spring Security] 로그인 구현 전체적인 인증 흐름 Filter(username, password 토큰 생성) -> Manager(Provider 구분) -> Provider(실제 인증 처리부) -> Service(username으로 DB에서 조회) -> Details(User정보 구성) -> Provider(입력 token과 Details 비교 검증, 일치할 시 Authentication 리턴) -> Filter(SpringContext에 Authentication 등록) 간단 요약 (입력된 username, password 토큰)을 (username으로 DB에서 조회한 유저정보)랑 비교 검증 일치하면 (Authentication 권한과 정보)를 SecurityContext에 등록 스택을 쌓아가며 인증처리를 한다. Authentica.. 2022. 8. 24. [데이터베이스] 트랜잭션 고립 수준 쓰기와 쓰기가 동시에 작업하는 것이 불가능 읽기와 읽기는 동시에 언제든 가능 문제 부분은 쓰기 트랜잭션과 읽기 트랜잭션이 동시에 일어날 때 하나의 트랜잭션은 발생 시점부터 데이터 일관성을 가져야 한다. Read uncommited - 오손 읽기(Dirty read) commit되지않은 데이터를 읽는 문제 Read commited - 반복 불가능 읽기(Non repeatable read) update -> commit된 데이터를 읽어, 데이터 일관성이 깨진다. Repeatable read - 유령 데이터 읽기(Phantom read) 트랜잭션 시작 전 commit 된 데이터만 undo영역을 이용하여 읽는다. 일관성이 깨지지 않는다. insert -> commit 된 데이터를 읽어, 데이터를 추가로 읽어 데.. 2022. 8. 23. [JPA] fetch LAZY인데 EAGER처럼 쿼리가 나갈 때 JPA 테스트 중에 분명 fetch LAZY로 설정했는데, sql을 보니 LAZY Entity까지 조인을 하면서 마치 EAGER처럼 동작을 하는 문제가 있었다. @OneToMany(mappedBy = "user1", fetch = FetchType.LAZY) private List userParty; @Test void test9(){ itemRepository.findByItemNameLikeAndUser1_NameLike("%2", "c%").forEach(System.out::println); System.out.println("-----"); // lazy 인데 왜 userParty 쿼리가 나갈까 } itemRepository에서 user1을 사용하는 쿼리 메서드 User1 ---> UserPar.. 2022. 8. 20. 이전 1 2 3 4 5 6 7 ··· 21 다음