본문 바로가기
반응형

STUDY/NodeJS18

Node.js와 JavaScript 구문의 차이점 Node.js에서 사용되는 자바스크립트 구문은 일반적인 브라우저 환경에서 사용되는 자바스크립트와 기본적으로 동일하다. Node.js는 Chrome V8 JavaScript 엔진을 사용하며, 일반적인 자바스크립트 문법과 ECMAScript 표준을 따르지만 몇 가지 중요한 차이점이 있다. / 환경 객체 (Global Object) 브라우저 환경에서는 window 객체가 전역 객체로 사용되지만, Node.js 환경에서는 global 객체가 전역 객체로 사용된다. 예를 들어, 브라우저에서는 window.setTimeout()을 사용할 수 있지만, Node.js에서는 global.setTimeout()을 사용한다. / 모듈 시스템 Node.js는 CommonJS를 사용하는 모듈 시스템을 지원하여 파일 간의 코드를.. 2024. 4. 4.
[1-1] dotenv로 환경변수 관리하기 dotenv는 Node.js 환경에서 환경 변수를 쉽게 관리하기 위한 패키지다. dotenv를 사용하면 윈도우 환경 변수에 직접 설정하지 않아도 된다. '.env' 파일에 환경 변수를 정의하면 Node.js 어플리케이션에서 이를 불러와 사용할 수 있다. 보통 Node.js 어플리케이션에서 사용되는 중요한 정보(예: 데이터베이스 정보, API 키 등)는 환경 변수에 저장되며, 어플리케이션이 실행될 때 환경 변수를 불러와 사용한다. 이는 애플리케이션의 보안을 강화하고, 환경 구성을 더욱 효율적으로 관리할 수 있다. 중요한 점은 .env 파일에는 민감한 정보를 저장하므로 외부에 노출되지 않도록 주의해야 한다. / .env파일 생성 및 환경 변수 정의 DB_HOST=localhost DB_USER=myuser .. 2024. 3. 29.
JWT 토큰 저장 방법들 - Cookies, HTTP인증헤더, 로컬스토리지, 세션스토리지 쿠키 (Cookies) 서버에서 클라이언트에게 JWT 토큰을 쿠키에 저장하여 전송할 수 있다. 쿠키는 HTTP 요청 헤더에 자동으로 포함되므로, 클라이언트 및 서버 모두에서 쉽게 액세스할 수 있고 Secure 및 HttpOnly 플래그를 사용하여 보안을 강화할 수 있다. Secure 플래그는 HTTPS 연결을 통해만 쿠키가 전송되도록 보장하고, HttpOnly 플래그는 JavaScript에서 쿠키에 접근하는 것을 방지하여 XSS 공격을 예방한다. // 회원 로그인 라우터 router.post('/login', async (req, res) => { try { // 이메일과 비밀번호를 이용하여 사용자를 인증하고 JWT 토큰 생성 const user = await User.findOne({ email: re.. 2024. 3. 28.
[인증/권한] 클라이언트와 서버 간의 인증 JWT(JSON Web Token) 공식 페이지 https://jwt.io/ JWT(JSON Web Token)는 주로 인증(Authentication) 및 권한(Authorization)에 관련된 기술로 사용된다. 정보를 안전하게 전송하기 위한 인터넷 표준으로 주로 클라이언트와 서버 간의 인증을 위해 사용된다. JSON으로 구성된 가볍고 자가수용적인 토큰이며, 사용자에 대한 정보를 담고 있고, 전자 서명되어 있어서 정보가 변경되지 않았음을 검증할 수 있다. 인증(Authentication) 사용자의 신원을 확인하고 인증하는 데 사용된다. 사용자가 로그인한 후에 서버로부터 발급된 토큰을 클라이언트에게 전달하고, 이 토큰을 이용하여 사용자의 인증 상태를 유지한다. 클라이언트는 이 토큰을 포함하여 서버에 요청을 보내며, 서버는 토큰을 검증하여.. 2024. 3. 28.
비밀번호 해싱 처리를 위한 Mongoose 미들웨어 설정 로그인 및 사용자 인증을 안전하게 하기 위해 비밀번호를 암호화하고 검증하는데에는 bcrypt가 필요하다. 이를 Mongoose 미들웨어를 이용하여 더 간편하게 구현할 수 있다. const mongoose = require('mongoose'); const bcrypt = require('bcrypt') const saltRounds = 10; //스키마 정의 const UserSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true }, role: { type: Nu.. 2024. 3. 27.
npm install으로 패키지 설치시에 사용되는 옵션들 -g 또는 --global npm으로 패키지를 전역(globally)으로 설치하려면 '-g' 옵션을 사용한다. 해당 패키지가 시스템 전체에서 사용 가능하도록 등록되어 이후 다른 프로젝트에서도 별도 설치없이 사용할 수 있다. npm install -g 만약 패키지가 전역으로 설치되었는지 확인하려면 'npm list -g ' 명령어를 아래처럼 사용하면 된다. -g로 설치가 되어있다면 해당 패키지 버전정보가 출력되고 아니라면 (empty)라고 출력이 된다. 주의 할 것은 프로젝트 별로 의존성 관리를 위해 -g 사용을 해도되는 것과 아닌 것을 잘 구분해야 한다. nodemon의 경우 프로젝트 내의 기능과 별개로 개발시에만 필요한 것으로, 주로 명령행도구(command-line-tools)등 공통으로 사용되는 것.. 2024. 1. 10.
HTTP 모듈로 서버구축 및 실행 HTTP 모듈은 Node.js의 기본 모듈로, HTTP 요청과 응답을 다루는 데 사용된다. HTTP모듈로 서버를 구축하고 실행하는 방법은 아래와 같다. 1. 기본 구조 / 모듈 불러오기 const http = require("http"); / 서버 생성 const server = http.createServer((req, res) => { // 요청 처리 로직 // req: 요청 객체 // res: 응답 객체 }); http.createServer 메서드는 HTTP 서버를 생성한다. createServer 메서드의 콜백 함수는 서버에 들어오는 각각의 요청에 대해 호출된다. req 객체는 요청에 관련된 정보를 포함하고 있다. res 객체는 응답을 생성하고 클라이언트에게 보낼 수 있는 메서드를 제공한다. /.. 2024. 1. 8.
[3-5] 파일 및 디렉터리 생성, 수정, 삭제 - File System(fs)모듈 Node.js의 fs (File System) 모듈은 파일 시스템과 상호 작용하기 위한 다양한 기능을 제공하는 핵심 모듈이다. 주요 기능은 파일 및 디렉토리 생성, 읽기, 쓰기, 삭제 등이 포함되어 있다. https://nodejs.org/docs/latest/api/fs.html 1. 파일 읽기 및 쓰기 (Reading and Writing Files) fs.readFile(path, options, callback) : 비동기적으로 파일을 읽는다. fs.readFileSync(path, options) : 동기적으로 파일을 읽는다. fs.writeFile(file, data, options, callback) : 비동기적으로 파일을 쓴다. fs.writeFileSync(file, data, optio.. 2024. 1. 7.
[3-4] 파일 및 디렉터리 경로 관리를 위한 path모듈 Node.js의 path 모듈은 파일 및 디렉터리 경로와 관련된 유틸리티 함수를 제공하는 모듈이다. 주로 파일 경로를 조작하거나 생성할 때 사용된다. https://nodejs.org/docs/latest/api/path.html node.js 홈페이지에서 docs에 들어가보면 관련 함수들과 사용법들을 알 수 있다. path.join([...paths]) 주어진 모든 경로 세그먼트를 결합하여 유효한 파일 경로로 만든다. const path = require('path'); const fullPath = path.join(__dirname, 'files', 'example.txt'); console.log(fullPath); path.resolve([...paths]) 현재 작업 디렉토리를 기준으로 주어진.. 2024. 1. 7.
[7-2] 비밀번호 해싱 및 검증 라이브러리 - bcrypt bcrypt는 비밀번호 해시 함수로, 주로 사용자 비밀번호를 안전하게 저장하기 위해 사용된다. bcrypt.js GitHub저장소 bcrypt.js on npm / 비밀번호 해시 함수 bcrypt는 일반적인 해시 함수와는 다르게 솔트(Salt)와 함께 동작한다. 솔트는 각 비밀번호에 랜덤한 값을 추가하여 해시 결과를 예측하기 어렵게 만든다. / 솔트(Salt) 각 비밀번호에는 서로 다른 솔트가 적용된다. 이는 같은 비밀번호라도 각각의 해시가 다르게 생성되어, 레인보우 테이블과 같은 사전 공격을 방지한다. / 안정성 bcrypt는 해시 알고리즘에 대한 여러 라운드를 지원하여, 더 많은 라운드를 사용할수록 해시 함수를 더 많이 반복하게 된다. 이로 인해 비밀번호를 해시하는 데 소요되는 시간이 증가하며, 무차.. 2023. 12. 13.
반응형