본문 바로가기
반응형

분류 전체보기68

JavaScript 변수 호이스팅과 함수 호이스팅 1. 변수 호이스팅(Variable Hoisting) 변수 호이스팅은 자바스크립트에서 변수를 선언할 때, 해당 변수가 코드 어디에 있든 선언 부분이 최상단으로 끌어올려지는 동작을 말한다. 변수 선언은 코드의 최상단으로 끌어올려지기 때문에 변수를 선언하기 전에 해당 변수를 사용해도 오류가 발생하지 않는다. 그러나 할당(초기화) 부분은 호이스팅되지 않으므로 변수를 선언하고 초기화하기 전에 해당 변수를 사용하면 undefined가 반환된다. console.log(x); // undefined var x = 5; console.log(x); // 5 위 코드는 실제로 아래와 같이 동작한다. var x; // 변수 선언이 호이스팅되어 최상단으로 이동 console.log(x); // undefined x = 5;.. 2023. 12. 15.
JavaScript 변수 특징과 유형 변수는 프로그램에서 데이터를 저장하고 참조하기 위한 기본적인 요소이다. 변수 선언 변수를 선언하는 과정은 'var', 'let', 'const'키워드를 사용하는데 ES6이후 주로 let과 const를 사용한다. 변수 할당 변수에 값을 할당하는 과정은 '=' 연산자를 사용한다. let name = 'John'; 변수의 스코프 변수의 스코프는 변수가 유효한 범위를 나타낸다. - 전역스코프(Global Scope) : 전역에 선언된 변수로 어디서든 접근 가능. - 지역스코프(Local Scope) : 함수 내에서 선언된 변수로, 함수 내에서만 접근 가능. - 블록 스코프(Block Scope) : { } 영역에서 선언된 변수로 블록 내에서만 접근 가능. (let과 const에서만) 변수 호이스팅 변수 호이스팅.. 2023. 12. 15.
[7-2] 비밀번호 해싱 및 검증 라이브러리 - bcrypt bcrypt는 비밀번호 해시 함수로, 주로 사용자 비밀번호를 안전하게 저장하기 위해 사용된다. bcrypt.js GitHub저장소 bcrypt.js on npm / 비밀번호 해시 함수 bcrypt는 일반적인 해시 함수와는 다르게 솔트(Salt)와 함께 동작한다. 솔트는 각 비밀번호에 랜덤한 값을 추가하여 해시 결과를 예측하기 어렵게 만든다. / 솔트(Salt) 각 비밀번호에는 서로 다른 솔트가 적용된다. 이는 같은 비밀번호라도 각각의 해시가 다르게 생성되어, 레인보우 테이블과 같은 사전 공격을 방지한다. / 안정성 bcrypt는 해시 알고리즘에 대한 여러 라운드를 지원하여, 더 많은 라운드를 사용할수록 해시 함수를 더 많이 반복하게 된다. 이로 인해 비밀번호를 해시하는 데 소요되는 시간이 증가하며, 무차.. 2023. 12. 13.
Session secret key 생성하기 - crypto 모듈 crypto 모듈은 Node.js에서 제공하는 암호화와 관련된 다양한 기능을 수행하는 모듈이다. 이 모듈을 사용해 해시생성, 암호화, 복호화, 서명 생성 등 다양한 암호와 작업을 할 수 있다. https://nodejs.org/api/crypto.html crypto 모듈의 기능이 많지만 그 중에 사용자 인증을 위해 사용되는 Session의 secret key를 생성하는 무작위 문자열 생성 하는 방법을 알아본다. Session secret key 생성하는 두 가지 방법 1) 16진수 문자열로 생성 const crypto = require('crypto'); // 무작위 문자열 생성 함수 const generateRandomString = (length) => { return crypto.randomByt.. 2023. 12. 8.
[7-1] 사용자 인증을 위한 passportjs Passport는 Node.js 애플리케이션에서 사용자 인증을 간편하게 처리할 수 있도록 도와주는 미들웨어다. Express 프레임워크와 함께 사용되며, 다양한 전략(Strategy)을 제공하여 로컬 인증, OAuth, OpenID 등을 구현할 수 있다. https://www.passportjs.org/tutorials/password/verify/ / Strategy Passport는 다양한 인증 전략을 제공한다. 각 전략은 특정한 인증 프로토콜을 구현하고 있다. 주로 사용되는 전략은 로컬전략(Local Strategy), OAuth, OpenID 등이 있다. 인증 프로토콜에 따라 사용자 인증을 처리하고 성공시에 사용자 정보를 제공한다. 로컬 전략의 경우 아이디와 비밀번호를 이용하여 인증을 수행한다. .. 2023. 12. 8.
무료로 https SSL/TLS 인증서를 발급받을 수 있는 인증 기관 Let's Encrypt https://letsencrypt.org/ Let's Encrypt는 가장 널리 알려진 무료 SSL/TLS 인증 기관 중 하나다. Certbot과 같은 도구를 사용하여 쉽게 SSL/TLS 인증서를 발급받을 수 있다. ZeroSSL https://zerossl.com/ ZeroSSL은 무료 SSL/TLS 인증서를 제공하는 또 다른 서비스다. 간단한 웹 기반 인터페이스를 통해 SSL/TLS 인증서를 생성하고 다운로드할 수 있다. 특히 Let's Encrypt을 사용할 수 없는 환경에서도 유용하게 사용될 수 있다. SSL For Free https://www.sslforfree.com/ SSL For Free도 간단한 웹 기반 인터페이스를 제공하여 무료 SSL/TLS 인증서를 발급받.. 2023. 12. 6.
[7-2] http의 취약점인 보안 강화를 위한 https HTTPS(SSL/TLS)는 HyperText Transfer Protocol Secure의 약자로, 웹 통신을 보안하기 위한 프로토콜이다. Express에서 HTTPS를 사용하는 것은 애플리케이션의 통신을 암호화하고 보안을 강화하기 위함이다. HTTP vs. HTTPS HTTP (HyperText Transfer Protocol) HTTP는 텍스트 데이터를 주고받는 프로토콜로, 데이터가 암호화되지 않는다. 따라서 민감한 정보를 전송할 때는 보안이 취약하다. HTTPS (HyperText Transfer Protocol Secure) HTTPS는 HTTP에 보안 기능을 추가한 프로토콜이다. 데이터는 암호화되어 전송되기 때문에 중간자 공격을 방지하고 데이터의 안전성을 보장한다. / 보안 Express로 H.. 2023. 12. 6.
일급 객체(first-class object)의 세 가지 조건 자바 스크립트에서 함수는 일급 객체로 취급되므로 세 가지 조건을 만족한다. 이것은 함수를 변수에 할당하고, 다른 함수의 인자로 전달하며 함수의 반환 값으로 사용할 수 있다는 의미이다. 1) 변수에 할당(Assignable) 함수는 변수에 할당할 수 있다. 함수를 다른 변수나 상수에 저장할 수 있다. const greet = function(name) { return `Hello, ${name}!`; }; const myFunction = greet; console.log(myFunction('John')); // 출력: Hello, John! 2) 객체의 인자로 전달 (Pass as an argument) 함수는 다른 함수에 매개변수로 전달할 수 있다. 함수를 인자로 받는 고차 함수를 만들거나 콜백함수로.. 2023. 12. 2.
JavaScript 콜백함수 콜백 유형 콜백 함수 (callback function)는 다른 함수의 매개변수로 전달되어 특정 시점이나 조건에 따라 실행되는 함수다. 콜백 함수는 비동기적인 작업, 이벤트 처리, 타이머 설정 등에 사용되고 자바스크립트에서 함수는 일급객체이기 때문에 다른 함수에 전달 될 수 있다. function mainFunction(callback) { // 어떤 작업 수행 // 콜백 함수 호출 callback(); } function callbackFunction() { console.log('콜백 함수가 호출되었습니다.'); } // mainFunction 호출 시 callbackFunction이 콜백으로 전달됨 mainFunction(callbackFunction); 1) 동기적 콜백 함수가 즉시 실행되는 경우로 호출한 .. 2023. 12. 1.
화살표 함수의 특징과 사용을 피해야 할 때 화살표 함수(arrow function)는 ES6(ECMAScript 2015)에서 도입된 새로운 함수 표현식이다. 기존의 함수 선언문과 함수 표현식에 비해 간결하고 몇 가지 특징이 있다. const add = (a, b) => { return a + b; }; 특징 1) 간결한 문법 화살표 함수는 함수 표현식을 간결하게 작성할 수 있도록 한다. 함수가 간단한 경우 중괄호와 return 키워드를 생략할 수 있다. // 일반 함수 표현식 const multiply = function(a, b) { return a * b; }; // 화살표 함수 const multiplyArrow = (a, b) => a * b; 2) this 바인딩 화살표 함수는 자신만의 'this'를 생성하지 않고 외부 스코프의 'th.. 2023. 12. 1.
반응형