Project(12)
-
오프셋 기반 페이지네이션 vs 커서기반 페이지네이션
오프셋 기반 페이지네이션 - 페이징 (장단점) offset만큼 읽는데 이전의 읽었던 것을 다시 쭉 읽은 후 조회해서 데이터가 많아지면 성능상 안 좋다. 데이터 중복 문제: 2페이지 끝까지 읽었는데 앞에 최신 데이터가 들어오면 3페이지 읽을 때 중복이 발생할 수 있다. JPA에서는 Pageable을 이용해서 쉽게 구현할 수 있다. 커서기반 페이지네이션 - 무한스크롤 (장단점) offset을 사용하지 않고 Cursor를 기준으로 다음 n개의 데이터를 응답해주는 방식이다. 따라서 cursor가 unique한 값이어야한다. 데이터 중복이 발생하지 않고, offset과 다르게 이전의 데이터를 읽지 않고 바로 다음 cursor에 대한 정보를 주면 되므로, 대량의 데이터를 다룰 때 성능상 좋다 대신 where절에 여..
2024.02.22 -
Refresh Token을 redis에 저장한 이유?
petree의 jwt흐름도 Refresh Token을 Redis에 저장한 이유? Redis는 key-value쌍으로 데이터를 관리할 수 있는 data storage이다. DB가 아닌 data storage라고 표현하지 않은 이유는 기본적으로 Redis는 in-memory로 데이터를 관리하므로, 저장된 데이터가 영속적이지 않기 때문이다. 이때 in-memory란? - DISK DBMS의 경우 - 디스크에 저장된 내용을 메인 메모리로 로딩을 해야하며 실행을 위해서는 cpu로 해당 데이터를 재전송해야한다. 하지만 메모리가격보다 저렴하다. - in-memory DBMS의 경우 - 메인 메모리에서 바로 cpu로 데이터를 전송만 하면 되므로 구조상 간단하다. 하지만 비용이 비싸다. 이러한 Redis에 Refresh..
2024.01.26 -
QueryDSL을 도입한 이유
QueryDSL을 도입한 이유 JPQL(Java Persistence Query Language) JPA에서 제공하는 메소드 호출만으로 섬세한 쿼리작성이 어렵다는 문제로 탄생된 것으로 테이블을 대상으로 쿼리하는 것이 아닌 엔터티 객체를 대성으로 쿼리한다. QueryDSL JPQL을 java코드로 작성하게 해주는 JPQL Builder이다. (=쉽게 말해, JPQL을 java코드로 작성가능하다.) 장점 코딩 과정에서 문법에러를 미리 알 수 있으며, 검색을 위한 유동적인 쿼리를 작성할 수 있는 장점을 가지고 있다. 단점 JPA 1차 캐시사용이 불가능하다. JPA를 통해 select하게되면, 영속성 컨텍스트 1차 캐시에 데이터가 저장되는데, QueryDSL은 이를 무시하고 DB에서 직접적으로 조회해온다. 여기..
2024.01.25 -
XSS?
XSS(Cross Site Scripting) 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법으로 XSS를 통해 사용자의 쿠키나 세션등의 민감한 정보를 탈취할 수 있다. Stored XSS 악의적인 사용자가 어떤 사이트에서 게시글을 작성할 때, 해당 게시글을 조회한 회원의 쿠키 정보를 탈취하는 악성 스크립트를 작성해서 저장했다고 가정하자. 이후, 사용자가, 악성 스크립트가 저장되어있는 게시글을 클릭하면, 게시글이 열리면서 스크립트 코드가 실행이 될 것이다. 이렇게 되면, 스크립트 코드를 통해서 사용자의 쿠키정보를 악의적인 사용자한테 전달할 것이다. 악의적인 사용자는 해당 쿠키를 통해서 서버의 사용자인척하여 악의적인 행동을 할 것이다. 만약 탈취한 쿠키가 관리자 회원의 쿠키였다면, 더욱 심각한 ..
2024.01.24 -
cookie, session, jwt
cookie 쿠키를 이용해서 서버는 우리의 브라우저에 데이터를 넣을 수 있다. - 데이터를 넣는 이유는, 클라이언트의 정보를 기억하기 위해서! 브라우저는 서버에 요청을 보내고, 서버는 이에 응답할텐데, 응답에는 모든 데이터와 클라이언트가 찾던 페이지 정보가 있다. 이때 응답에 쿠키도 포함함! 브라우저에 쿠키를 저장한 후, 해당 웹사이트에 방문할 때마다, 브라우저는 해당 쿠키를 요청과 함께 보내게 된다. 쿠키는 도메인에 따라 제한이 된다. ex) 유튜브가 준 쿠키는 유튜브에만 전송이 된다. 쿠키는 유효기간이 있다. (서버가 유효기간을 정함) 쿠키는 인증 뿐만 아니라, 여러가지 정보를 저장한다. session과 token이 필요한 이유 http프로토콜(클라이언트와 서버 사이 데이터를 전송하는 프로토콜)은 s..
2024.01.16 -
Oauth개념 및 동작방식
Oauth개념 및 동작방식 이해하기 웹 서핑을 하다보면 google과 kakao와 같이 외부 소셜 계정을 기반으로 간편히 회원가입 및 로그인할 수 있는 웹 어플리케이션을 쉽게 찾아볼 수 있다. 예를 들어, google로 로그인하면 API를 통해 연동된 계정 정보를 가져와 로그인이 간편하게 진행된다. 이때 사용되는 프로토콜이 OAuth이다. OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. (위키백과) '원티드라 서비스'는 사용자 인증을 위해 kakao, naver, facebook, google등의 사용자 인증 방식을 사용한다고 가정하자. ..
2024.01.15