반응형

개인 공부용 포스팅이라 다소 틀린 내용이 포함되어 있을수 있으니 적당히 거르고 검증해서 보시기 바랍니다.

틀린내용은 댓글로 알려주시면 감사합니다.

 

쿠키란?

 - 서버의 필요에 따라서 웹 브라우저가 저장하는 작은 데이터들이라고 생각하면 된다.

 - 쿠키는 서버에서 오는 응답 속 header 내용에 따라서 저장된다.

 - 그냥 로컬 파일 데이터라고 생각하면 편함

 

쿠키는 어떻게 사용하는가?

 - 서버의 응답속 Heaer 중 Set-Cookie Header안에 key=value 형태로 포함되어 있다.

 - 해당 key에 따른 value 값을 저장하며 쿠키 항목에 대한 여러가지 추가 설정을 지정할 수 도 있다.

 

쿠키 저장 순서

 - Response 내의 Set-Cookie Header 확인.

 - 해당 Header 속 cookie들을 웹 브라우저가 저장

 - 그 이후 브라우저를 통해 보내는 요청에는 cookie 정보가 포함되어 전송된다.

 

쿠키의 활용 예

 - 특정 유저의 로그인 정보를 개별 브라우저에 저장하여 자동 로그인에 활용 가능

 - 특정 계정의 인터넷 검색어 등을 쿠키에 저장하고 이를 활용하여 유저에게 맞춤 화면을 노출 가능.

 

쿠키의 장점

 - http 특징중 하나인 stateless를 극복하려할 때 쿠키를 사용 가능.

  -> 위의 활용 예와 같은 경우 특정 유저에 대한 일종의 상태정보를 쿠키로 누적 가능.

 

쿠키의 단점

 - 브라우저에 저장된다.

 - 타인에게 노출되거나 변조될 여지가 있다.

 - 웹 브라우저마다 생성되기 때문에 다른 브라우저로 접속시 쿠키가 유지되지 않는다.

 

사실상 단점중 보안상의 이슈가 제일 크며 이로 인해 중요한 정보를 쿠키로 저장하면 이슈가 생길 수 있다.

 

==============

위에서는 간단한 내용만 적어보았고 이제 좀더 세세한 내용을 알아 보자

===============

 

쿠키의 종류는 어떤것이 있을까?

1. persistence cookie

2. session cookie

 

persistence cookie

 - 파일로 생성된다.

  -> tmi : 임시 인터넷 파일로 생성됨.

 - 브라우저의 쿠키 파일을 삭제하거나 해당 쿠키가 만료된 후 사라진다.

 - 최초 접속 시 서버로 전송된다.

 - 주로 사용되는 곳으로는 팝업 하루동안 띄우지 않기 등이 있다.

 

session cookie

 - 브라우저의 메모리에 생성된다.

 - 브라우저를 종료하면 사라진다.

 - 최초 접속 시 서버로 전송되지 않는다.

 - 주로 session id를 저장할 때 허용된다.

 

cookie 실제 추가 요청 시

server response :

 - Set-Cookie : tmp_cookie=tmp_val

 - Set-Cookie : other_key=other_value

 

cookie가 실제 request에 포함되어 있을 때

 - cookie Header 안에 포함되어 온다.

 - ex 

    -> cookie : tmp_name=tmp_val;  other_cookie_name=other_cookie_val; ...

    -> cookie라는 Header 안에 ;를 구분자로 여러 cookie 항목이 저장되어 있다.

 

위와 같이 server response에 Set-Cookie header가 들어 있다면

브라우저는 해당 cookie들을 저장한다. 이때 Set-Cookie는 한가지 쿠키밖에 지정을 못하기 때문에 

여러 쿠키를 저장할 경우 Set-Cookie Header를 여러개 지정해 주어야 한다.

 

cookie 추가 시 여러가지 속성 지정하는 방법

Header에 cookie를 지정할 때 여러가지 속성을 지정할 수 있으며 종류는 대략 아래와 같다.

 - cname=calue : cookie 이름과 cookie 값

 - expires=someday : 해당 cookie의 만료 기간에 대한 정보.

  -> 참고 : Max-Age로 해당 쿠키의 유효기간을 짖어할 수도 있다

  -> 참고2 : expires, Max-Age를 지정하면 해당 cookie는 persistence cookie가 된다.

그외에도 path, domain 등의 속성 지정이 가능하니 필요 시 검색해보길 바란다.

 

session cookie 중 알아야하는 것으로는 JSESSION cookie 항목이 있다.

 - Session에 대한 정보를 서버가 저장한 후 이에 대해 접근할 수 있도록 지정한 id 를 저장하는 cookie

 - 주의 : Session 에 대한 정보를 저장한 cookie가 아니고 그에 대한 식별id 정보이다.

 - 주의2 : 해당 JSESSION 속 session id는 각각 접속시, 각각의 브라우저 마다 다르게 할당된다.

 

반응형
Posted by Sweetmeats_boy

2023. 11. 14. 17:04 Web

OAuth2에 대해서.

반응형

해당 포스팅은 개인 공부용으로 정리하는 내용이며 잘못된 내용이 포함되어 있을 수 있습니다.

잚소된 내용은 댓글로 알려주시면 반영하겠습니다.

 

OAuth란 무엇인가.

공식 url : https://oauth.net/2/

 

OAuth 2.0 — OAuth

OAuth 2.0 OAuth 2.0 is the industry-standard protocol for authorization. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. This

oauth.net

OAuth란 인증을 위한 개방형 표준 프로토콜이다.

예전부터 문제가 많이 발생했던 각 홈페이지가 특정 유저의 개인 정보를 수집, 활용하던 방식에서

유저와 특정 서비스가 믿을만한 중개사를 끼고 인증을 보장받는 방식으로 바뀐것이 OAuth 라고 생각하면 이해가 쉽다.

기존의 서비스에서 발생하던 문제들은 주로 불필요한 개인정보 수집, 그리고 이로인한 해킹등의 보보안 이슈로 인해서 발생하는 개인정보 유출 등이 있다. 이러한 문제를 해결하고자 많은 사람들이 고심하며 만들어낸 것이 OpenID, OAuth이다.

현시대에서 게임에 로그인하거나 쿠팡등의 서비스에 로그인할 때 "간편 로그인"으로 들어갈 수 있게 해주는 인증방식을 제공해주는 것이 OAuth이다.

 

OAuth에서의 주요 용어와 그 뜻

 

Authentication

 - 인증 자격이 있는지 검증하는 단계

 

Authorization

 - 접근 자격, 권한을 부여하는 것을 의미하며, 인가완료 시 접근권한이 담긴 AccessToken을 부여한다.

 

AccessToken

 - 리소스에 대한 접근 권한을 획득할 때 사용되는 Token으로 만료기간이 존재한다.

 - AccessToken은 특별히 어떤 형식을 지니고 있지 않다.

 

RefreshToken

 - AccessToken 만료 시 갱신하기 위한 용도로 사용되는 Token이다.

 

OAuth에서의 각 역할 주체

 

Resource Owner

 - 자원 소유자를 의미하며 특정 Service에 해당 자원에 대한 접근 권한을 부여해주는 주체를 의미한다.

 - ex : game에 간편로그인으로 접속하려는 user

 

Client

 - 자원에 대한 접근 요청을 하는 Service 또는 App

 

Resource Server

 - 사용자의 자원에 대한 호스팅을 담당하는 Server

 

Authorization Server

 - 인증과 권한 부여를 수행하는 Server로 client의 접근자격을 확인한 후 AccessToken을 발급하여 권한을 부여한다.

 

OAuth 인증 방식의 종류

 

Authorization Code

 - 권한 부여 승인 코드 방식

 - 가장 많이 쓰이고 있는 방식이다.

 => ex : 간편 로그인

 - client가 User를 대신하여 특정 자원에 대한 접근을 요청할 때 사용되는 방식.

 - Refresh Token이 사용 가능하다.

 

Impicit Grant [ legacy ]

 - 자격증명을 안전하게 저장하기 힘든 환경에 최적화된 방식.

 => ex : 자바스크립트 등

 - 권한부여 승인 코드 없이 바로 AccessToken이 발급된다.

 - Token 유출을 막기 위해서 해당 Token의 만료기간을 짧게 설정하며 RefreshToken의 사용이 불가능한 방식이다.

 

Resource Owner Password Credential Grant [ legacy ]

 - 자원 소유자 자격 증명 승인 방식

 - username, password를 통해 AccessToken을 받는 방식으로 RefreshToken까지 사용이 가능하다.

 - 이 방식은 권한서버, 리소스 서버, client가 모두 같은 시스템에 속해있을 때 사용해야 한다.

 

Client Credentials

 - client가 자신이 관리하는 resource 혹은 권한 서버에 해당 client를 위한 별도의 resource가 존재할 때 사용된다.

 

Device Code

 - 해당 인증방식은 브라우저가 없거나 입력이 제한된 장비에서 이전에 AccessToken를 위해  획득된 device code를 교체하기 위한 과정에서 사용된다.

 - client가 AccessToken이 만료된 경우 사용하는 인증 방식.

 - 이 경우 client는 user와 상호작용 없이 적합한 AccessToken을 획득할 수 있다.

 

반응형
Posted by Sweetmeats_boy
반응형

해당 링크, 항목은 주기적으로 최신화 및 갱신될 예정입니다.

 

 

DB 관련

. https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all 
 - 간단한 쿼리등을 연습할 수 있는 곳

. http://sqlfiddle.com/

 - 간단한 쿼리등을 연습할 수 있는 곳

. https://sqlzoo.net/wiki/SQL_Tutorial

 - SQL Tutorial 같은 곳.

 

CPP

. https://modoocode.com/

 - 개인적으로 요근래 자주 보는 곳, C / CPP / 알고리즘이 정리되어 있는 곳.

 

C#

. https://www.csharpstudy.com/

 - 개인적으로 가장 자주보는 C# 관련 site, C#과 관련된 많은 것들이 잘 정리되어 있다.

 

Django

 

Web

 

Unreal

 

Unity

 

GameClient

 

GameServer

 

 

반응형

'기타 상식' 카테고리의 다른 글

OIDC란?  (0) 2020.07.28
서버 인증방식  (0) 2020.07.26
SaaS/PaaS/IaaS란?  (0) 2020.05.29
software license 에 대하여.  (0) 2020.05.27
프로그램에서 CPU 시간정보 얻는법  (0) 2019.09.20
Posted by Sweetmeats_boy

2021. 10. 2. 17:27 개인공간/ToDo

공부 계획

반응형

우선 위의 분류대로 공부 예정, 

빈칸은 공부중에 필요 시 추가 예정.

반응형
Posted by Sweetmeats_boy

2021. 7. 18. 16:37 Network

Reverse Proxy Server 란?

반응형

앞서 Proxy Server와 비슷한 역할을 하지만 반대 방향으로 일을 진행한다고 생각하면 쉽다.

 

Reverse Proxy란

. Proxy Server가 여러 Client로부터 받은 요청을 중계하여 Server에 요청을 하는 것이라면, 

Reverse Proxyt Server는 Client로부터 받은 요청들을 여러 Server에 중계해주는 역할을 한다.

 - 즉, LAN->WAN을 중계하는것이 proxy / WAN->LAN을 중계하는 것이 reverse proxy

 

그렇다면 reverse proxy만의 특징은 무엇이 있을까

. Client요청을 Server에 전달하기 전, 또는 응답하기 전에 전후처리를 할 수 있다.

. URL마다 호출하는 서버를 지정할 수 있으며, 동적 contents를 전달하는 서비스(ex: SPA)의 경우 

트래픽을 적절히 분산할 수 있으며 서비스 개발, 유지보수가 쉬워진다.

 

반응형

'Network' 카테고리의 다른 글

Proxy Server 에 대하여  (0) 2021.07.18
HTTP Protocol  (0) 2021.06.20
OSI 7계층과 TCP/IP 4 계층  (0) 2021.06.20
load balancing  (0) 2020.08.27
OSI 7계층와 TCP/IP 4 계층  (0) 2020.08.27
Posted by Sweetmeats_boy

2021. 7. 18. 15:58 Network

Proxy Server 에 대하여

반응형

위키백과에는 다음과 같이 서술되어 있다.

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%EC%84%9C%EB%B2%84

 

프록시 서버 - 위키백과, 우리 모두의 백과사전

도식화한 프록시 서버. 두 컴퓨터 사이에 끼어 있는 컴퓨터가 바로 프록시 서버이다. 프록시 서버(영어: proxy server 프록시 서버[*])는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적

ko.wikipedia.org

Proxy server란 client가 자신을 대신하여 다른 network service에

간접적으로 접속할 수 있게 해주는 System 혹은 Computer를 의미한다.

 

proxy server를 통한 요청과정은 간단하게 아래와 같이 이루어진다.

[ 정확히는 Front Proxy Server이지만 보통 Proxy Server라고 부르면 Front Proxy Server를 의미한다. ]

. client가 특정 service에 대한 url을 요청

. 해당 요청이 proxy server에 전달됨.

. proxy server가 해당 요청을 확인 후 특정 service에 전달 및 응답 수신

. 해당 응답을 client에 전달.

 

위의 과정을 client 가 직접하는 것이 아닌 proxy server를 통해 수행하는 이유는 무엇일까?

당연히 proxy server를 통해서 얻는 이점이 있기 때문이고 해당 이점은 아래와 같다.

. 특정 요청에 대한 결과를 캐싱함으로써 응답에 걸리는 시간을 줄일 수 있다.

 - 예를 들어 특정 url로 GET을 여러번 요청하는 경우 캐싱된 내용을 전달함으로써 시간 단축

 - 캐싱된 내용을 전달하는 경우 Service에 불필요한 연결을 줄일 수 있다.

 - 또한 이로인해 전체 네트워크의 트래픽이 주어들기 때문에 네트워크 병목현상도 줄어든다.

. Client가 Proxy server를 거침으로써 자신의 IP를 숨길 수 있다. 

. 필요에 따라서 접속을 Proxy Server를 통해서 우회할 수 있다.

. 즉, Proxy Server를 통한 요청의 경우 LAN->WAN의 요청을 대리하는 경우라고 볼 수 있다.

 

VPN과  Proxy server의 차이

. Proxy Server의 경우 Data의 암호화를 하지는 않는다.

. VPN의 경우 보안처리된 터널을 통해 Data를 주고 받기 때문에 보안이 유지된다.

반응형

'Network' 카테고리의 다른 글

Reverse Proxy Server 란?  (0) 2021.07.18
HTTP Protocol  (0) 2021.06.20
OSI 7계층과 TCP/IP 4 계층  (0) 2021.06.20
load balancing  (0) 2020.08.27
OSI 7계층와 TCP/IP 4 계층  (0) 2020.08.27
Posted by Sweetmeats_boy
반응형

proxy server 란?

. client가 자신을 타 network service에 간접적으로 접속할 수 있게 해준다.

 - server, client 사이에서 대리자로써 통신을 중계해준다.

 - LAN -> WAN의 요청을 대리 수행

. client의 요청내용을 캐싱함으로써 불필요한 요청 및 연결, 전송시간 절감 등의 이점이 있다.

 

reverse proxy server란?

.  proxy server와는 반대의 개념으로 client의 요청을 한대 이상의 server에 요청을 전달한다.

 - WAN -> LAN의 요청을 대리 수행

. reverse proxy 장비내에 있는 웹 service를 외부로 노추시키지 않는 장점이 있다.

 

 

반응형

'용어 관련' 카테고리의 다른 글

thread란  (0) 2023.12.15
Process에 대해서  (0) 2023.12.13
Zero Trust Model  (0) 2021.07.18
DeadLock, Live Lock  (0) 2021.06.20
SPOF란  (0) 2021.06.20
Posted by Sweetmeats_boy

2021. 7. 18. 15:24 용어 관련

Zero Trust Model

반응형

Zero Trust Model이란?

. 말 그대로 믿지못하고 끊임없이 확인한다는 의미의 모델.

. 접근하려는 모든 것에 대한 접근권한을 부여하기 이전에 인증확인을 해야한다는 것.

 - 실제 사용자가 맞는지, 어떻게 접근을 요청했는지, 안전한 접근인지 등등

. 해당 model은 기존 레거시 시스템에는 적용하기가 다소 난해하다.

. 새로 구현하는 cloud service등에 적용하면 좋다.

. 관련 키워드 : OAuth

반응형

'용어 관련' 카테고리의 다른 글

Process에 대해서  (0) 2023.12.13
proxy server , reverse proxy server  (0) 2021.07.18
DeadLock, Live Lock  (0) 2021.06.20
SPOF란  (0) 2021.06.20
데드 레커닝[Dead reckoning] 이란?  (0) 2019.08.30
Posted by Sweetmeats_boy
반응형

알아두면 유용한 함수들

. ABS(`val`) : val의 절대값 출력

. CREATEST(`val1`, `val2`, ....`valN`) : 주어진 n개의 값들 중 가장 큰 값을 반환

. LEAST(`val1`, `val2`, ....`valN`) : 주어진 n개의 값들 중 가장 작은 값을 반환

. CONCAT('Str1', 'Str2', 'Str3',...) : 주어진 문자열들을 모두 연결한 후 반환

. SUBSTR('문자열', startPos, length) : 문자열의 startPos 부터 Length만큼을 반환

 

알아두면 좋은 함수들 (Group화 관련)

. COUNT(`columnName`) : 사용 시 해당 columnName에 속한 항목의 갯수를 반환

. SUM(`columnName`) : 해당 column들의 합계를 반환

. AVG(`columnName`) : 해당 Column들의 평균을 반환

. MAX(`columnName`) , MIN(`columnName`) : 각각 그룹화된 항목 중 최대값, 최소값을 반환

 

알아두면 좋은 함수들 (date 관련)

. CURRENT_TIMESTAMP : 해당 장비의 시간을 반환

. GET_UTCDATE() : 해당 장비의 UTC시간을 반환

. DATE_ADD(date1, deltaVal, `ValType`) : date1에 deltaVal만큼 추가 후 반환 (ValType은 시간, 분 초 등등)

. DATE_SUB(date1, deltaVal, `ValType`) : date1에 deltaVal만큼 감소 후 반환(ValType은 시간, 분 초 등등)

 

 

알아두면 좋은 함수들 (JOIN 관련)

쉽게 이해하기

옆의 그림의 경우 RIGHT JOIN을 표현한 그림이다.

RIGHT쪽으로 JOIN시킬 때

아래의 화살표에 해당하는 경우 매칭되는 값이 존재하지만

위의 화살표에 해당되는 경우 매칭되는 값이 존재하지 않는다.

따라서 이경우 해당 매칭값에 대하여 NULL값을 출력한다.

( LEFT JOIN의 경우 위와 반대 )

반응형

'Database > MySQL' 카테고리의 다른 글

기본적인 SQL 쿼리들 - 2  (0) 2021.07.01
기본적인 SQL 쿼리들 - 1  (0) 2021.06.20
Posted by Sweetmeats_boy
반응형

DataBase

. 생성 : Create database `DBName`

. 삭제 : Drop database `DBName`

. DB 목록 조회 : SHOW databases

. 선택 : USE `DBName`

 

Table

. 생성

//table 명과 해당 table에 속하는 column들의 이름, 속성 지정.
CREATE TABLE `TableName`(
 `ColumnName_1` Int Private key, 
 `ColumnName_2` varchar(100) not null,
)

. 삭제

//Table을 아예 삭제해버린다.
DROP TABLE `TableName`;

//Table의 내용물만 비운다, 기존 Table은 텅빈상태로 존재.
Truncate Table `TableName`;

. scheme 조회

//해당 table의 scheme을 조회
desc `TableName`;

. Index 지정

ALTER TABLE `TableName` ADD INDEX `IndexName` (관련 Column-1, 관련 Column-2, ...);

. Index 제거

ALTER TABLE `TableName` DROP INDEX `indexName`;

. Column 생성

ALTER TABLE `tableName` ADD `ColumnName` Column 관련 속성 지정

. Column 삭제

ALTER TABLE `tableName` DROP `columnName`;

. Column 변경

ALTER TABLE `tableName` CHANGE `columnName` 새로운 Column 속성들;

 

Group 조회

특정 쿼리~ +  `tableName` group by `columnName` HAVING `조건`;

/*
ex : SELECT `T1` GROUP BY `COL1` HAVING COUNT(COL1) > 1;
 -> col1에 대해서 group화 한 후 col1이 1 초과인 경우를 출력
*/

 

 

반응형

'Database > MySQL' 카테고리의 다른 글

기본적인 SQL 쿼리들 - 3  (0) 2021.07.01
기본적인 SQL 쿼리들 - 1  (0) 2021.06.20
Posted by Sweetmeats_boy

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함