Basics/Node.js에 해당하는 글 23

  1. Hash 2021.08.17

    어떤 페이지에 접근할 때는 URL을 통해 접근할 수 있다. 단, 페이지 안에서 어떤 특정한 부분으로 접근하고 싶을 때는? 예를 들어, 3개의 문단으로 구성된 글이 어떤 페이지(hash.html)내에 있고, 어떤 URL을 통해 그 페이지에 접근했을 때 3번째 문단을 기준으로 접근하고 싶다고 하자. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type s..


  2. fetch API 2021.08.16

    Asynchronous Javascript And Xml : AJAX, 에이작스 비동기 방식의 Javascript와 Xml을 가리킨다. 데이터를 가져올 때 불필요한 정보까지 끌어내는 전체 페이지 리로드 없이 Ajax를 이용해서 필요한 정보만 가져 올 수 있다. → 데이터를 절약할 수 있고 + 싱글 페이지 애플리케이션을 구현할 수 있다. 싱글 페이지 애플리케이션 = 하나의 페이지로 여러 정보를 표현할 수 있는 애플리케이션. ajax를 구현하려면? → fetch API를 사용할 것이다 fetch API의 요청과 응답 클라이언트와 서버가 서로 통신을 할 때 클라이언트가 우선 요청. fetch함수는 첫번째 인자로 전달된 데이터를 서버에게 요청해 준다. fetch('javascript') : 웹브라우저에게 jav..


  3. [Express] 보안과 express generator 2021.07.17

    보안 관리 참고 1. 최신 버전의 Express를 유지할 것 2. TLS를 사용할 것 = https → 웹브라우저와 웹서버가 서로 통신을 할 때 상호간의 암호화가 체결이 되기 때문에 중간에 누가 데이터를 가로채가도 그 데이터의 실제 내용이 무엇인지 알 수 없게 할 수 있다. 인증서를 통해 웹사이트의 도메인과 같은 것을 변주해서 피싱하려 할 때 경고도 띄워준다. 3. 헬멧을 사용할 것 → 헬멧 = 보안과 관련해서 일어날 수 있는 여러 가지 보안 이슈들을 자동으로 해결해 주는 모듈들을 모아 놓은 것 4. 쿠키를 올바르게 사용할 것 → 어떤 웹사이트에 사용자들이 방문할 때 누가 방문했는지 확인하기 위해 방문자 하나하나를 식별할 필요가 있다. 이 때 사용되는 주요한 매커니즘, 인증에서 핵심적인 역할을 하는 것 ..


  4. [Express] 라우터 - 파일로 분리 2021.07.17

    소프트웨어가 커짐에 따라 그 복잡도를 잘 정리정돈/관리하지 않으면 소프트웨어의 확장에 한계가 있다. https://expressjs.com/ko/guide/routing.html 넘 어렵다... const express = require("express"); const app = express(); const port = 3000; var fs = require("fs"); var template = require("./lib/template.js"); var path = require("path"); var sanitizeHtml = require("sanitize-html"); var qs = require("querystring"); var bodyParser = require("body-parse..


  5. [Express] 에러 처리하기 2021.07.17

    가장 흔한 에러는 존재하지 않는 페이지를 찾았을 때 발생하는 에러. http상에서는 404 Not Found라는 에러를 보내주기로 약속되어 있음. 참고 링크 : https://expressjs.com/ko/starter/faq.html app.use(function(req, res, next) { res.status(404).send('Sorry cant find that!'); }); 끝에다가 위 코드를 추가하면 된다. 근데 왜 끝에다 해야할까? → 미들웨어는 순차적으로 실행되기 때문에 더 이상 실행할 수 있는 상황이 없을 때 끝까지 도착하게 되고, 그 때 에러 처리를 하는 것이다. 링크 양식에는 맞지만 작성한 글 리스트에 없는 글 제목을 불러오려고 했을 때도 에러로 처리해 보자. 45, 46번째 줄의..


  6. [Express] 미들웨어의 실행순서 2021.07.16

    http://expressjs.com/en/guide/using-middleware.html 미들웨어는 여러가지 타입이 있다. 지금까지 사용했던 것은 application-level middleware이다. app. 은 객체가 담겨있고 use, get, post 등의 방식을 통해 미들웨어를 등록할 수 있는데, 그런 식으로 등록된 미들웨어를 의미한다. app.use(function (req, res, next){ console.log('Time:', Date.now()) next() }) → app.use에다가 함수를 등록하게 되면 그 함수는 미들웨어로서 등록된다. 미들웨어의 핵심은 request와 response 객체를 받아서 변형할 수 있다는 것임 +next 호출을 통해 그 다음에 실행되어야 할 미들웨..


  7. [Express] 미들웨어 만들기 2021.07.16

    http://expressjs.com/en/guide/writing-middleware.html 미들웨어는 아래와 같이 만들 수 있다. var express = require('express') var app = express() var myLogger = function (req, res, next) { var myLogger =console.log('LOGGED') var myLogger =next() var myLogger =} → app.use의 변수가 되는 함수는 첫 번째 인자는 request 객체, 두 번째 인자는 response 객체, 세 번째는 next라는 값을 가지고 있는 함수이다. request response를 받아서 그것을 변형할 수 있다. next호출을 통해 그 다음에 실행해야 할..


  8. 보안 2021.06.24

    오염된 정보가 들어올 때 생길 수 있는 문제 어떻게 위험한가? 예를들어 주소 뒤에 /?id=../password.js 등을 치면? → .. = 현재 디렉토리, data 디렉토리의 부모 디렉토리의 데이터를 가져올 수 있다. ..을 더 많이 치면 보다 상위 디렉토리의 데이터를 가져올 수 있게 된다. 어떻게 막을 수 있을까? 참고 링크 path.parse()를 이용해서 디렉토리, 확장자, 파일 이름 등을 알 수 있다. path.parse().base 를 이용하면 경로를 탐색해나갈 수 있는 정보를 세탁할 수 있다. 오염된 정보, 문제의 소지가 있는 정보를 걸러내는것 = filter 오염된 정보가 나갈 때 생길 수 있는 문제 만약 이런 글을 게시하면... 이런 글이 뜨게 된다. 스크립트 태그 내부에 locatio..


  9. 모듈 2021.06.24

    코드를 작성하는 과정에서 코드가 늘어나면 정리하는 과정이 필요하다. (ex. 객체, 배열, 함수 등..) 이러한 정리수단인 객체가 늘어나면 더 큰 틀의 정리 수단이 필요하다. → 모듈(Module) 모듈 : 특정한 기능을 하는 함수나 변수들의 집합 모듈은 파일로 쪼개서 밖으로 내보낼 수 있음 = 모듈로 만들면 여러 프로그램에서 재사용 가능 코드가 길다 싶으면 파일로 잘게 쪼개서 관리하기 쉽게 만들 수 있다는 것~ var M = { v: "v", f: function() { console.log(this.v); }, }; //아래 명령어는 약속이다. module.exports = M; //기능들 중에서 M이 가리키는 객체를 모듈 밖에서 사용할 수 있도록 내보내겠다. → 다른 파일에서 쓰고 싶은 변수들을 m..


  10. 동기와 비동기 2021.06.21

    동기(synchronous) : 하나의 일을 마칠 때까지 기다렸다가 그 일이 끝나면 순서대로 다음 일을 처리하는 것 비동기(asynchronous) : 기다리지 않고 다른 일을 동시에 진행하면서 순서대로 처리하는 것(=효율적이고 복잡하다) https://nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs_fs_readfilesync_path_options 예시로, readFile을 살펴보자. readFile과 readFileSync가 있다. Sync는 callback이 없다. node js는 비동기적으로 처리하는 것을 선호한다. → 동기적 처리를 따로 명령어를 만들어놨으니... fs.readFileSync(path[,options]) //readFileSync cons..