본문 바로가기

Back-End

(116)
Node.js.47.1.App제작-출력정보에 대한 보안 저번 시간: 오염된 정보가 들어오는 문제 이번 시간: 오염된 정보가 나가는 문제 목표 태그를 그대로 표현하여 문제 해결하기 (1) 문제 예시 1 XSS로 들어갈 때마다 경고창이 뜬다. 이를 page view source로 보면 script 태그가 들어가 있기 때문에 발생한다. 즉, 공격자가 자바스크립트 코드를 심어놓으면 방문자가 메롱 알림창을 보게 된다. (2) 문제 예시 2 이를 제출하게 되면 입력한 웹 브라우저로 이동하게 된다. 이 외에 사용자의 로그인 정보를 갈취한다던지, ... 많은 온라인 서비스들이 사용자들에게서부터 입력받은 정보를 바깥으로 출력할 때는 정보에서 문제가 될 수 있는 것들을 필터링하는 작업이 필요하다. 해결 방법 1. 사용자가 입력한 태그를 지운다. 2. 태그를 웹 브라우저 상에 ..
Node.js.46.App 제작-입력정보에 대한 보안 웹 애플리케이션의 보안 문제 사용자의 id와 password 정보를 담은 파일이 있다고 하자. //password.js module.exports = { id:'egoing', password:'111111' } ../ : 현재 디렉토리의 부모 디렉토리 ../password.js을 입력하게 되면 파일을 읽게 된다. 이를 view page source로 보면 우리가 만들었던 password.js가 화면에 출력되는 최악의 경우가 생긴다. 또한 ../을 덧붙이면 우리 컴퓨터를 모두 탐색할 수 있게 된다. 이 문제를 해결해보자. Google에 nodejs path parse 검색해보자. Path | Node.js v14.9.0 Documentation Path# Source Code: lib/path.js Th..
Node.js.45.App 제작 - 모듈의 활용 코드가 너무 기므로 외부 파일에 독립적으로 사용할만한 코드를 찾아보자. 목표 var template을 상부 코드처럼 바깥에서 모듈을 가져다 써보자! lib 폴더를 생성한다. 보통, 모듈을 모아 놓는 폴더를 library라는 뜻의 lib 문자로 많이 생성한다. 그리고 그 속에 template.js 파일을 생성하자. lib > template.js // var template = { module.exports = { html: function (title, list, control, body) { var template = ` WEB ${list} ${control} ${body} `; return template; }, list: function(filelist){ var list = ''; var i =..
Node.js.44.Node.js 모듈의형식 정리정돈 - 객체, 배열, 함수 이러한 객체를 또 더 큰 틀에 정리정돈할 수 있는 틀이 모듈이다. 객체들이 많아지면 또 객체를 정리정돈을 해야 할 필요가 있다. 모듈을 이용하면 파일로 쪼개서 외부로 독립시킬 수 있다. 모듈 사용하기 //nodejs폴더 > mpart.js var M = { v: 'v', f: function() { console.log(this.v); } } M.f();//v module.exports = M; mpart.js 파일 속에 우리가 만든 모듈이 담겨있는 모든 기능들 중에서, 객체 M을 모듈 바깥에서 사용할 수 있도록 수출하겠다는 의미. // nodejs 폴더 > module.js var mpart = require('./mpart.js'); console.log(mpart);..
Node.js.43.App제작-템플릿 기능 정리정돈하기 (Refactoring) ▶ 객체? 서로 연관된 데이터와, 그 데이터를 처리하는 방법인 함수를 그룹핑하여 코드의 복잡성을 낮추는 수납상자. 객체 활용하기 객체를 통해 함수들을 정리정돈해보자! -> 객체 template을 만들어 안에 templateList, templateHTML 함수를 넣기 이와 같이 결과는 같지만 코드를 정리하는 것을 Refactoring이라 한다. 이를 통해 코드를 더 유지보수하기 쉬우며 개선시키는 방향으로 나아가야만 한다! 전체 코드 var http = require('http'); var url = require('url'); var fs = require('fs'); var qs = require('qs'); var template = { html: function (title, list, contro..
Node.js.42.JavaScript-객체-데이터와 처리 방법을 담는 그릇으로서 객체 목표 객체에 함수를 담으면 이름으로 함수를 불러올 수 있기 때문에, 객체에 함수를 담는 용도로 많이 사용한다. 그렇다면 객체에 함수를 담으면 무엇을 할 수 있고 어떤 장점이 있는지 알아보자. 만약 1억줄의 코드가 있다고 생각해보자. 수많은 변수 중 아래 두 변수가 있다고 생각해보자. var v1 = 'v1'; // 10,000 codes v1 = 'egoing'; var v2 = 'v2'; 코드가 많으므로 v1값은 이전 값에서 새로운 값으로 덮어질 것이다. 이런 상황에서 객체를 사용하면 도움이 된다. var o = { v1: 'v1', v2: 'v2', }; 이처럼 하나의 객체 안에 정리정돈하여 변수를 넣어놓는 것이다. 하나의 폴더를 만들어 정리정돈하는 것으로 생각하면 된다. //v1을 처리하는 함수 f..
Node.js.41.JavaScript-객체-값으로서 함수 목표 OOP(Object Oriented Programming)에 필요한 기능 알아보기 '프로그래밍을 한다'는 말은 1. 데이터 2. 그 데이터를 처리하는 것 두 가지로 이뤄져 있다. 데이터를 잘 정리정돈하는 것으론 array, object가 있다. 또 다른 코드와 구분하기 위해 연관된 것을 그룹핑하기 위해서 함수를 사용했었다. 자바스크립트에서 함수는 처리해야 할 일에 대한 정보를 가지고 있는 일종의 구문(statement)이면서, 동시에 값이라고도 할 수 있다. 쉽게 생각해서, 우선은 함수를 변수에 넣을 수 있다면 값이라고 생각하자. (ex) var i = if(true){console.log(1);} //ERROR 자바스크립트에서는 조건문 구문이 값이 아니기 때문에 에러가 발생한다. var w = w..
Node.js.40.JavaScript-객체-반복 // array var members = ['egoing', 'k8805', 'hoya']; var i = 0; while(i < members.length){ console.log(`array loop`, members[i]); i++; } // object //각 데이터마다 고유한 이름을 부여함 var roles = { 'programmer': 'egoing', 'designer': 'k8805', 'manager': 'hoya' }; for(var name in roles){ console.log(`object`, name); } 객체의 값을 가져올 때, 1. . 2. [] 를 통해 가져올 수 있다. // array var members = ['egoing', 'k8805', 'hoya']; var..

반응형