Computer Science

    [ Network ] 토큰 기반 인증 방식에 대하여

    토큰 기반 인증 시스템 토큰 기반 인증이란 사용자가 자신의 아이덴티티를 확인하고 고유한 액세스 토큰을 받을 수 있는 프로토콜을 말한다. 사용자는 토큰 유효 기간 동안 동일한 웹페이지나 앱, 혹은 그 밖에 해당 토큰으로 보호를 받는 리소스로 돌아갈 때마다 자격 증명을 다시 입력할 필요 없이 토큰이 발급된 웹사이트나 앱에 액세스할 수 있다. 토큰 기반 시스템 작동 원리 유저가 로그인 서버에서 계정정보 검증 계정 정보가 정확하다면 Signed 토큰을 발급 클라이언트측에서는 발급받은 토큰을 저장, 서버에서 요청을 할 때마다 토큰을 전달 서버는 토큰을 검증하고, 요청에 응답 웹서버에 토큰을 서버에 전달할땐, HTTP 요청의 헤더에 토큰값을 포함시켜 전달 토큰 기반 시스템의 장점 1. 무상태성 & 확장성 토큰은 클..

    [ Frontend ] JWT 토큰을 저장하는 방법

    JWT ( Json Web Token ) Json Web Token 이란 사용자의 인증이 담긴 정보를 암호화한 토큰을 의미한다. JWT 정보를 Authorization 에 담아 전송하며, 이것을 서버에서 검증하여 사용자의 정보 열람, 권한 부여 등의 인증/ 인가 작업을 수행할 수 있다. JWT 탈취하는 주요 공격으로는 XSS, CSRF 공격이 있다. XSS ( Cross Site Scripting ) CSS 라고 불리지 않는 이유는 cascading style sheets ( css ) 가 이미 널리 쓰고 있기 때문이다. XSS 공격은 공격자가 상대방의 브라우저에 스크립트가 실행되도록 하여, 사용자의 세션 혹은 웹사이트를 변조하여 악의적인 콘텐츠/ 피싱 공격을 의미한다. CSRF ( Cross Site ..

    [NETWORK] 웹프로토콜 이란

    웹 프로토콜이란? 웹에서 쓰이는 프로토콜, 즉 웹에서 사용하는 통신 규약으로 통신을 할때 약속을 하고 전달하는 것이다. HTTP / HTTPS 인터넷에서 데이터를 주고받는 프로토콜이다. 웹 서버에서 통신하기 위해 사용하는 주요 프로토콜이다. 주로 4가지 방식을 통한 통신을 하는데 GET : 문서를 요청, 조회할때 사용 HEAD : 상태 정보를 요청, GET 과 동일하게 응답 POST : 데이터를 서버로 송신, 서버에서 데이터를 특정 데이터에 생성 PUT : 데이터를 서버로 송신, 서버가 특정 아이템을 완전 대체 IP / MAC / ARP IP ( Internet Protocol ) : 각 노드에 부여된 주소 MAC ( Media Access Control ) : 각 네트워크에 할당된 고유 주소 ARP (..

    [NETWORK] Base64 인코딩이란?

    [NETWORK] Base64 인코딩이란?

    Base 64 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩이다. ASCII 를 사용해서 표현할 수 있는 가장 큰 진법이기 때문에 Base64 를 이용해서 만들어졌다. 보통 A-Z, a~z, 0~9, + , / 를 사용해서 64 글자를 채운다. 그리고 마지막 연산중 모자라는 비트가 생기면 = 로 채워넣는다. 보통 = 가 1개에서 2개정도 생긴다고 한다. 굳이 Base 64 로 인코딩하는 이유는 공통인 64개의 안전한 출력 문자만 사용해 인코딩해서 전달하는 것으로, 데이터가 더 길어지긴 하지만 공통 문자열로 인코딩했기에 어떤 OS 에서 사용해도 데이터가 왜곡되지 않기 때문이다.

    [NETWORK] TCP 와 UDP 설명과 비교

    [NETWORK] TCP 와 UDP 설명과 비교

    TCP vs UDP TCP 와 UDP 는 OSI 7 Layer 와 TCP/IP 모델의 전송계층에서 사용되는 프로토콜이다. 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고, IP에 의해 전달되는 오류를 검사하며 재전송 제어를 담당하는 계층이다. TCP (Transmission Control Protocol) 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 사용되는 프로토콜 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종이다. 한국어로 번역하면 전송 제어 프로토콜. TCP는 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약으로 보통 하위 계층에 사용하는 IP 와 묶어서 TCP/IP 라고 한다. 3 way ..

    [NETWORK] HTTP 의 State Code 설명

    HTTP 의 상태 코드 ( State Code ) HTTP 의 상태 코드는 특정 HTTP 요청의 완료 여부를 나타낸다 응답은 5개 클래스로 그룹화 된다. 1. 1XX ( 정보 ) : 요청을 받았음, 프로세스 진행중 2. 2XX ( 성공 ) : 요청이 성공했음, 3. 1XX ( 리다이렉션 ) : 요청 완료를 위해 추가 작업 요망 4. 4XX ( 클라이언트 오류 ) : 잘못된 요청 구문, 라우팅 등 5. 5XX ( 서버 오류 ) : 서버가 요청을 처리할 준비가 되지 않음 자세한 내용은 하단 참조 Reference https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses HTTP response status codes - H..

    [NETWORK] HTTP 의 GET, POST 비교

    GET GET 요청은 데이터를 읽거나 검색할때 사용되는 Method GET 요청을 전송할때 쿼리 스트링 방식을 이용해서 전송한다. ( URL 주소 끝에 파라미터 ) 불필요한 반복 요청을 제한하기 위해 요청이 캐시되는 경우도 있음 GET 요청은 idempotent 한 요청임 POST 리소스를 생성, 업데이트 하기 위해 서버에 보내는데 사용 POST 요청은 캐시되지 않음 데이터를 Body 에 담아서 전송, Content-Type 에 요청 데이터 타입 표시에 따라 결정됨 POST 요청은 idempotent 하지 않음 GET, POST 차이점 idempotent , 멱등성이라고 하는 것인데 연산을 여러번 적용하더라도 결과가 변하지 않는 성질을 의미한다. GET 은 idempotent , POST 는 Non-id..

    [NETWORK] HTTP 와 HTTPS

    HTTP vs HTTPS HTTP 와 HTTPS 의 가장 큰 차이점은 S 부분 즉 SSL ( Secure Socket Layer ) 인증서 를 사용하는 Hyper Text Transefer Protocol 이다. HTTPS HTTPS 가 작동하는지 간단하게 확인하는 방법은 도메인 이름 옆에 자물쇠가 있으면 간단하게 HTTPS 를 확인할 수 있다. HTTPS 는 SSL 프로토콜을 통한 SSL 인증서를 사용하는 HTTP 이다. SSL 인증 방식을 사용하였으며 대칭키 암호화 비대칭키 암호화 방식을 모두 사용하고 있다. 대칭키 암호화는 암호화와 복호화의 키를 같은 키를 이용한다. 비대칭키 암호화는 1개의 쌍으로 구성된 공개키와 개인키를 각각 암호화와 복호화에 사용한다. HTTPS 의 동작 방식은 A라는 서버를 ..

    [NETWORK] 쿠키와 세션, 그리고 브라우저 스토리지 ( Web Storage )

    Cookie, Session 쿠키와 세션을 사용하는 이유는 HTTP 의 특징이자 약점을 보완하기 위해 사용한다. 1. 비연결성지향(connectionless) - 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊어버리는 특성 2. 무상태(Stateless) - 통신이 끝나면 상태를 유지하지 않는 특성 하지만 우리가 쇼핑몰을 사용할때 만약에 페이지가 바뀔 때마다 다시 로그인을 한다거나, 장바구니에 담긴 데이터가 사라진다거나 하면 두 번 다시는 그 사이트를 이용하지 않을 것이다. 쿠키 ( Cookie ) 쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터다. 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효시간 안에는 브라우저가 종료되어도 인증이 유지된다는 특징이 있다. 하나의 쿠키에 최..

    [Network] 사용자의 패스워드를 전송하고 보관하기.

    제7조(개인정보의 암호화) ① 개인정보처리자는 고유식별정보, 비밀번호, 바이오정보를 정보통신망을 통하여 송신하거나 보조저장매체 등을 통하여 전달하는 경우에는 이를 암호화하여야 한다. 유저의 개인정보를 전송하는 방법 유저의 패스워드나 민감정보등을 보낼때, 평문으로 보내면 굉장히 위험할 것이다. 가로채기 공격의 위험 등, 그래서 개발자는 유저들의 정보를 전송할때 암호화를 통해서 보내야한다. 유저들의 개인 정보를 전송하는 방법은 몇가지 방법이 있다. Hash ( 해시 ) 첫번째는 Hash 를 통한 단방향 암호화이다. 단방향 암호화는 암호화를 시키면 복호화는 불가능한 방식으로 Hash 알고리즘을 통해 데이터를 매핑 시켜 완전 다른 데이터로 변환 시키는 것을 의미한다. 이런 과정을 다이제스트라고 한다. 암호화를 ..