TIL DAY1 | JavaScript의 변수 선언과 HTTPS

정예원·2021년 8월 3일
4

JavaScript

목록 보기
13/13
post-thumbnail

정답을 찾는 과정을 즐기자!

오늘은 JavaScript의 기본 개념과 네트워크를 살펴보았다.
그 중 궁금했던 'var를 사용하지 않는 이유'와 'HTTPS 사용 이유'에 대해서 조금 더 알아보고자 한다.


1. 우리가 var를 사용하지 않는 이유?

var 변수/함수 선언문에서만 호이스팅이 일어난다.

호이스팅(Hoisting)이란?

함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것을 말한다.

  • 변수 선언과 할당 중 선언부분만 분리하여 최상위로 옮겨집니다. 선언된 변수에 값을 할당하는 내용은 원래 그 라인에 있다.
  • Parser가 함수 실행 전 해당 함수를 한 번 훑으며 아래 쪽에 존재하는 내용 중 필요한 값들만 끌어올린다.
  • 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장되지만, 코드에서 입력한 위치와 정확히 일치한 곳에 있다.
  • 같은 이름의 var 변수 선언과 함수 선언시 변수가 함수보다 위로 끌어올려진다.

호이스팅이 발생하면 왜 안좋은가?

  1. 코드의 가독성이 떨어진다.
  2. 스코프 꼬임 현상이 발생할 수 있다.
  3. 유지보수가 어렵다.

이러한 단점에도 불구하고 왜 아직 var를 사용하는가?

  • 호환성문제 때문이다. ES6를 어디서든 쓸 수 있으려면 시간이 더 필요하기때문이다.

2. HTTP가 있는데 왜 HTTPS를 만들었나요?

암호화, 인증 및 무결성 보장 때문에 HTTP보다 더 안전하다.

HTTPS(Hypertext Transfer Protocol Secure)는 HTTP 프로토콜의 보안 버전이다.

인터넷을 사용하다보면 '주의 요함'과 같은 경고 메시지를 본 적이 있을 것이다. 이것이 HTTPS가 적용되지 않은 도메인을 사용할 경우 마주치는 문제이다.

HTTP의 패킷을 분석해보면, POST로 보낸 데이터가 암호화되지 않고 평문 텍스트로 그대로 노출된다. 즉, 암호화되지 않은 데이터를 전송하기 때문에 server와 client가 주고 받는 메시지를 그대로 노출하기 때문에 보안에 아주 취약하다.

반면, HTTPS 프로토콜은 데이터를 암호화하여 통신한다. 따라서 웹 사이트 사용자가 인터넷을 통해 신용 카드 번호, 은행 정보 및 로그인 자격 증명과 같은 중요한 데이터를 안전하게 전송할 수 있다.

HTTPS 통신 과정

사용자가 velog에 접속하려고 하는 경우를 예시로 들어보았다. 
  1. 브라우저에서 인증기관에 velog의 인증서가 있는지 확인한다.
  2. 인증기관에서 브라우저에 암호화키가 들어있는 인증서를 전송한다.
  3. 인증서를 받은 브라우저는 데이터를 암호화하여 velog 웹서버와 통신한다.
  4. velog 웹서버는 최초 가지고 있던 암호화키로 복호화한다.

그렇다면 HTTPS에 추가된 기능은?

HTTP의 단점을 극복하고자 SSL이라는 기술을 추가했다.

SSL(Secure Socket Layer)는 들어오고 나가는 데이터들을 암호화하는 보안 기능을 갖고 있는 '보안 인증서'이다. SSL은 TLS로도 불린다.

Reference

profile
hello world!

1개의 댓글

comment-user-thumbnail
2021년 8월 21일

안녕하세요~! 예원님이 오늘 배운 내용을 간결하게 핵심위주로 적어주셔서 글이 술술 읽혔답니다! HTTP, HTTPS의 차이점을 한 눈에 이해할 수 있게 적어주셨군요! 저도 궁금하던 주제여서 더욱 관심을 가지고 읽을 수 있었습니다. 그리고 개인적으로 SSL은 어떻게 동작하는지 더 알아보고 싶은 생각이 들었어요! 좋은 글 감사합니다^^😄

답글 달기