개발일지/웹개발

개발일지/웹개발

HTTP 3xx - 리다이렉션 (Redirection)

3xx Redirection 이란? 요청을 완료하기 위해 유저 에이전트의 추가 조치가 필요하다 웹 브라우저는 3xx 응답의 결과에 Location 헤다가 있을 경우, Location 위치로 자동 이동한다 리다이렉션의 종류 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동 원래의 URL을 사용하지 않는 경우, 검색 엔진 등에서도 변경 인지 /members -> /users /event -> /new-event 일시 리다이렉션 - 일시적인 변경 리소스의 URI가 일시적으로 변경 검색 엔진 등에서 URL을 변경하면 안 된다 주문 완료 후 주문 내역 화면으로 이동 PRG : Post/Redirect/Get 특수 리다이렉션 결과 대신 캐시를 사용 영구 - 301 Moved Permanently 리다이렉트..

개발일지/웹개발

Spring-boot Github Actions 환경변수 설정해주기

Github Actions의 self-hosted를 이용하여 자동배포를 구현하던 중 문제가 발생했다. 깃허브 액션에서 빌드 단계에서 계속 실패한다. 에러를 살펴보던 중 발견한 놈이다. Caused by: java.lang.IllegalArgumentException at PropertyPlaceholderHelper.java:180 37 내가 설정한 환경변수를 못 찾겠단다 ??? 아니 도대체 왜 못 찾는 거지? 난 분명 ec2에 환경변수 설정을 해놨는데 못 읽는단다;; 그래서 구글링을 하던 도중 알게 된 사실이 깃허브 액션은 빌드할 때 환경변수를 읽어오는 위치가 ec2가 아니란다 그럼 도대체 어디서 읽어오는 건데??? 구글 열심히 뒤져봤지만 원하는 답을 찾지 못했고 (아는 사람 제발 알려주세요..ㅠㅠ) ..

개발일지/웹개발

Spring-boot Github Actions를 이용한 자동배포

Github Actions를 이용하여 EC2, Linode 등 ubuntu 서버에 자동배포를 알아보겠습니다. 우선 본인의 서버 pc에 접속하여 기본적인 세팅을 해줍시다. sudo apt update # 각자 원하는 버전을 설치하시면 됩니다 sudo apt install openjdk-11-jre-headless 서버에서 사용할 포트도 열어줍니다 EC2 -> 보안탭의 인바운드 규칙 수정 Linode -> firewalld 를 사용하여 포트 개방 (기본적으로 열려있음) 자동배포할 프로젝트 레포지토리로 이동하여 Settings - Actions - Runners - New self-hosted runner로 이동합니다 운영 체제에 맞게 선택해주시고 표시한곳까지 서버 터미널에 명령어들을 차례로 입력해 줍니다. ..

개발일지/웹개발

토큰 기반 자격 증명 방식

토큰이라 하면 오락실이나 놀이공원서 사용하는 동전을 떠올릴 수 있다 물론 요즘은 사용하지 않지만... ㅎㅎ 토큰은 '대가를 지불하였고, 이 시설(서비스)을 이용할 수 있다'는 의미를 담은 증표이다 애플리케이션 보안 측면에서의 토큰은 어떤 의미일까? ✔️ 토큰이란? 인증된 사용자의 자격을 증명하는 동시에 접근 권한을 부여해 접근 권한이 부여된 특정 리소스에만 접근이 가능하게 하는 역할 ✔️ 토큰 기반 자격 증명의 특징 인증된 사용자의 정보를 토큰에 저장하고, 접근 권한을 부여해 접근 권한이 부여된 특정 리소스에만 접근이 가능하게 하는 방식 토큰에 포함된 인증된 사용자 정보는 서버 측에서 별도의 관리를 하지 않는다 생성된 토큰을 헤더에 포함시켜 request 전송 시, 인증된 사용자 인지를 증명하는 수단으로..

개발일지/웹개발

세션(session)이란?

✔️ 세션(session)이란? 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법 일정 시간 동안 같은 사용자로부터 들어오는 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술 쿠키는 클라이언트 측에 데이터를 저장하지만, 세션은 서버 측에 데이터를 저장한다 ✔️ 세션 기반 자격 증명의 특징 세션은 인증된 사용자 정보를 서버 측 세션 저장소에서 관리한다. 생성된 사용자 세션의 고유 ID인 세션 ID는 클라이언트의 쿠키에 저장되어 request 전송 시, 인증된 사용자인지를 증명하는 수단으로 사용된다. 세션 ID만 클라이언트 쪽에서 사용하므로 상대적으로 적은 네트워크 트래픽을 사용한다. 서버 측에서 세션 정보를 관리하므로 보안성 측면에서 조금 더 유리하다. (토큰에 비해) 서버의 확장..

개발일지/웹개발

Cookie의 옵션들

✔️ Cookie 쿠키는 클라이언트에 데이터를 저장하기 위한 수단 중 하나이다. 서버가 클라이언트에게 쿠키를 전송하기도 하며, 클라이언트가 서버로 쿠키를 전송하기도 한다. 서버가 클라이언트에 데이터를 저장할 수 있으나, 아무 때나 데이터를 이용할 수는 없다. 데이터를 저장한 이후 특정 조건들이 만족하는 경우에만 다시 가져올 수 있다. 이러한 조건들은 쿠키 옵션으로 표현할 수 있습니다. ✅ Domain 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키를 전송할 수 있게 한다. 도메인은 www.google.com 과 같은 서버에 접속할 수 있는 이름이다 쿠키 옵션에서 도메인은 포트 및 서브 도메인 정보, 세부 경로를 포함하지 않는다. 쿠키 옵션의 도메인은 http://www.localhost.com:30..

개발일지/웹개발

Hashing, Salt

✔️ Hashing 어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것 모든 값에 대해 해시 값을 계산하는데 오래 걸리지 않아야 한다. -> 변환이 한 시간 걸린다면 로그인도 한 시간 걸린다는 뜻 최대한 같은 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다. 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다. ✅ 대표적인 해싱 알고리즘 MD(Message Digest) - MD4, MD5, MD6 SHA(Secure Hash Algorithm) - SHA-1, SHA-256, SHA-512 RIPEMD(RIPE Message Digest) WhirlPool ❗️ 이미 보안이 뚫린 해시 함수가 존재하므로 주의하여 사용해야 한다. ex) MD5, SHA-1, HA..

개발일지/웹개발

Transaction

👉 A 씨는 커피 주문 앱으로 아이스 아메리카노를 선택하고 결제 버튼을 누른 후, 주문이 진행되는 중에 네트워크 오류로 인해 결제를 완료하는데 실패했습니다. 그런데, A씨가 주문한 커피는 정상적으로 데이터베이스에 등록이 되었습니다. 이 경우, 카페를 운영하는 쪽에서는 판매 수익을 얻지 못하는 손해를 보게 됩니다. ✔️ 트랜잭션 (Transaction) 이란 ? 위의 사례를 예방하기 위해 여러 개의 작업들을 하나의 그룹으로 묶어서 처리하는 단위입니다. 즉, 여러개의 작업들을 하나의 작업으로 보고 전부 성공해야만 실제 데이터에 반영하도록 하는 것입니다. 전부 성공하든가 전부 실패하든가(All or Nothing)의 둘 중 하나로만 처리되어야 트랜잭션의 의미를 가질 수 있습니다. -> 하나라도 실패하면 모두 ..

개발일지/웹개발

REST API

REST란? (Representational State Transfer) 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식 -> API를 작성하는 여러 방식들 중 하나의 방식 좋은 REST API를 디자인하는 방법 로이 필딩은 REST 성숙도 모델은 총 4단계(0~3)로 나누어지며, 모든 단계를 충족해야 REST API라고 부를 수 있다고 주장했다 실제로는 엄밀하게 3단계까지 지키기 어렵기 때문에 2단계까지만 적용해도 좋은 API디자인이라고 한다 이런 경우 HTTP API라고도 부른다 REST 성숙도 모델 0단계 - HTTP 사용 단순히 HTTP 프로토콜을 사용하기만 해도 된다. 하지만 REST API라고 할 수 없으며, ..

E-room
'개발일지/웹개발' 카테고리의 글 목록