본문 바로가기

분류 전체보기

SSL 인증서의 역할 및 용어 인증서의 기능은 크게 두가지다. 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버임을 보장한다( CA를 통해 인증 ) Chrome과 같은 각 브루아저들에는 신뢰가능한 CA 리스트가 탑재되어 있다 만약, 리스트에 없는 CA에 의한 인증서의 경우, 브라우저에서 경고 메세지를 띄워 주기도 한다. SSL 통신에 사용할 공개키를 클라이언트에게 제공한 CA(Certificate authority) 인증서의 역할은 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할을 한다. 이 역할을 하는 민간기업들이 있는데 이런 기업들을 CA(Certificate authority) 혹은 Root Certificate 라고 부른다. CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기.. 더보기
SSL 디지털 인증서(Feat. 대칭키, 공개키....) SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다. 클라이언트가 서버에 접속한 직후에 서버가 클라이언트에게 이 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다. SSL과 SSL 디지털 인증서를 이용했을 때의 이점은 아래와 같다. 통신 내용이 공격자에게 노출되는 것을 막을 수 있다. 클라이언트가 접속하려는 서버가 신뢰 할 수 있는 서버인지를 판단할 수 있다. 통신 내용의 악의적인 변경을 방지할 수 있다. SSL에서 사용하는 암호화의 종류 이 수업의 목적은 서버에 SSL 인증서를 설치해서 서버로 접속하는 클라이언트가 안전하게 통신할 수 있도록 하는 것이다. SSL의 동작방법은 이를 수행하기 위해서 꼭 필요.. 더보기
1. HTTP vs HPPT[S] 여기에서 [로그인] 페이지로 이동을 해보자. 로그인 페이지에는 [HTTPS] Protocol이 적용돼 있다. ID와 PW는 절대적으로(특히PW)는 노출시켜서는 안 된다. 그래서 HTTPS로 안전하게 암호화를 시켜서 서버에 전송을 해야 한다. (참고로, HTTPS의 S는 Secure Socket Layer(SSL)의 약자이다) HTTPS VS HTTP HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이 보안이 강화된 HTTP라는 것을 짐작할 수 있다. HTTP는 암호화되지 않은 방법으로 데이터를 전송하.. 더보기
CORS 정책(Feat. 웹 사이트 보안 이슈, Referer) 일단 먼저 Request Header에 들어 가는 [Referer] 속성에 대해 먼저 이해를 하자 리퍼러를 참조함으로써 현재 표시 하는 웹페이지가 어떤 웹페이지에서 요청되었는지 알수 있으며, 어떤 웹사이트나 웹서버에서 방문자가 왔는지를 파악할수 있는 기능을 레퍼러를 통해 할수 있다. 구체적 설명 [http://www.info19.com/1.html] 이라는 웹페이지에 있는 링크를 클릭하여 [http://www.info19.com/2.html] 으로 이동했 을 때 Referer는 [http://www.info19.com/1.html] 이 된다. 대부분의 웹서버에는 전 트래픽로그가 존재하며, 브라우저가 송신한 HTTP리퍼러를 기록하고 있다. 많은 웹 로그 분석 소 프트는 이 정보를 처리 가능하다. 리퍼러 정.. 더보기
비동기/동기 + blocking/non-blocking(최종본) 동기 + blocking : [호출한] 함수가 [호출된] 함수의 실행이 완료될 때까지(return될 때까지) Thread1은 task2를 실행하지 않는다. 동기 + non-blocking : [호출한] 함수가 [호출된] 함수가 즉시 작업을 완료하지 못하면 즉시 return을 하여 코드 실행 제어 권을 다른 쓰레드에게 넘겨서 그 쓰레드는 [호출된] 함수의 실행이 완료될 때까지 다른 작업을 할 수가 있다. 이때, [호출한] 함수(쓰레드)는 주기적으로 [호출된] 함수에게 작업 완료 여부를 물어 본다 [호출된] 함수의 실행이 완료되면 비로서 return 값을 받아서 [호출한] 함수의 나머지 코드들을 실행을 한다. (non-blocking은 Thread 관점으로 본다면, 하나의 Thread가 여러 개의 IO를 처.. 더보기
CallBack함수(feat. 비동기 처리의 [동기화] ) CallBack함수 : A(),B()라는 두 개의 함수가 있다고 하자. 1.B()함수(Callback 함수)는 A()함수 내부에서 호출이 된다. 이떄, Callback 함수인 B() 함수는 A() 함수[B()함수를 제외한 코드의 집합]의 실행이 끝나고 나서야, 비로소 실행이 된다. 2.단지 함수를 등록하기만 하고 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수! // 참고로 , 이 코드에는 callback 함수가 없고, callback 함수의 필요성을 설명을 하기 위하여 // setTimeout()이라는 비동기 함수를 먼저 설명을 하고 있다. function findUser(id) { let user; // 실행 순서 2 //setTimeout() : 비동기 함수(0.1초 실행.. 더보기
동기, 비동기 함수(FEAT. JS) function promiseFunc(){ return new Promise(function(res, rej) {// Doing something! res(1); }); } async function asyncFunc(){ console.log("2"); const res = await promiseFunc(); //여기서 asyncFunction()함수는 blocking 상태가 된다. console.log(res);// 고로, console.log(res)는 실행을 미루고, 17줄의 console.log(4) } //를 실행을 한다. // 그러다가 promiseFunc()실행이 완료가 되면, 그때서야 // console.log(res)가 실행이 되고, 함수가 종료된다. // 이 이하가 main() 부분.. 더보기
@Tailable(feat.SSE Protocol...) @Data @Document(collection = "chat") // 채팅이 오고 갈때마다, 이 [컬렉션]에 데이터들을 밀어 넣을 거다. public class Chat { @Id private String id; private String msg; private String sender; // 송신자 private String receiver; // 수신자 private LocalDateTime createdAt; } MongoDB에 "chat"이라는 [컬렉션]이 있다고 하자! db.chat.insert({sender:'ssar',receiver:'cos',msg:'안녕'}); // 송신자 : ssar, 수신자 : cos db.chat.insert({sender:'cos',receiver:'ssar'.. 더보기