<-->
본문 바로가기

반응형

프로그래밍

(16)
mongoDB와 mongoose mongoDB 몽고디비는 NoSQL 도큐먼트형 데이터 베이스이다. 데이터를 도큐먼트 단위로 저장하며 따로 테이블을 작성하지않아도 원하는 필드와 값을 넣을 수 있다. //한개의 도큐먼트 { name:"noodler", email:"email@gmail.com", favorite:"fishing" } Mongoose mongoose는 NodeJS와 mongoDB 사이를 연결해주는 ODM(Object Document Mapper)이다. Schema를 지원해(mongoDB에는 없음) 객체지향구조를 보장하고 mongoDB의 CRUD를 지원한다. mongoose.Schema mongoDB의 도큐먼트 안에 어떤 값이든 들어갈 수 있다. 하지만 name에 숫자만 입력하거나 중복된 email 주소를 입력하는등 예상치 못..
Controller 수준의 유효성 검증 (express-validator) form POST 데이터 저장 경로 아래 그림은 데이터가 저장되는 경로이다. (HTML form의 경우) express-validator(Controller 수준 유효성 검증)는 필수!! VIEW수준 (HTML) 에만 유효성 검증을 적용하면 이렇게 악용 될수있다. noodler.tistory.com/45 HTML 유효성 검증 취약점 웹사이트에 유효성 검증 기능을 적용하다가 생각해냈다. view(MVC할때 view)쪽에서 HTML Form input의 pattern을 설정하고있는데 email name password 제출 생각해보니까 view 파일들은 브라우저에서 소스를 확 noodler.tistory.com 이는 Controller 수준에 유효성 검증을 추가해서 방지할 수있다.. express-valid..
HTML 유효성 검증 취약점 웹사이트에 유효성 검증 기능을 적용하다가 생각해냈다. view(MVC할때 view)쪽에서 HTML Form input의 pattern을 설정하고있는데 email name password 제출 생각해보니까 view 파일들은 브라우저에서 소스를 확인하고 수정 할 수 있고, 이를 악용하면 pattern만 쏙 지워서 이상한 데이터 값을 넣을수 있겠다 싶어 테스트해봤다. 일반적인 상황 하지만 여기서 pattern 속성을 지워준다면? pattern 속성 지움 원치 않은 결과가 나온다. 따라서 controller랑 model에서도 유효성 체크를 해줘야 한다!!!
클로저를 공부해봤다!! - 어원편 developer.mozilla.org/ko/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript 객체지향 자바스크립트 개요 비록 다른 객체지향적인 언어들과의 차이점에 대한 논쟁들이 있긴 하지만, JavaScript는 강력한 객체지향 프로그래밍 능력들을 지니고 있다. developer.mozilla.org 코드를 좀더 구조적으로 짜고싶어서 객체지향 자바스크립트 문서랑 기본서를 뒤적거리고있다. 클로저는 정보은닉과 캡슐화같은 이점을 얻게해주는 자바스크립트의 기술이다. 자바 class의 private 같은 느낌인거같다. 정보은닉을 할 필요가 없으면 굳이 클로저를 안쓰고 prototype에 메소드를 추가하는게 메모리 절약에 도움된다고 한다. (클로저를 ..
bcrypt를 사용한 비밀번호 암호화 (local passport mongoose 패키지를 사용하면 더 간편하게 회원가입,로그인을 구현할수있다!) 깃허브에서 패키지 코드를 처음 열어봤다. 코드가 진짜 짧고 깔끔해서 놀랐다. 에러 조건도 확인할수있어서 시간들여 읽어볼만한거 같다. bcrypt는 평문 값을 해싱하고 그 값을 원래 값(평문 값)과 대조 할수있는 메소드를 가진 패키지다! github.com/kelektiv/node.bcrypt.js kelektiv/node.bcrypt.js bcrypt for NodeJs. Contribute to kelektiv/node.bcrypt.js development by creating an account on GitHub. github.com 기본 용어 해시: 평문 비밀번호를 복원할수 없는 문자열로 ..
(잡담)테스트 주도 개발(TDD)을 해봤다 NodeJS 공부하다가 mocha, chai로 적용해봤는데 이거 진짜 물건이다. test폴더를 따로 만들어서 그안에 코드(함수,모듈), 예상결과, 오류 메시지를 넣고 테스트하는게 전부라서 얼핏 봤을 때 "그냥 메인코드에 때려넣고 돌리는거랑 뭐가 다르지"라는 생각이 들었는데 시간을 들여 controller 코드에 적용해보니까 번뜩하고 깨달음을 얻었다. 1. 처음부터 작은 단위로 TDD를 하다보면 추후에 있을 치명적인 오류를 예방 할 수 있다. -> 나는 가끔 자잘한 실수 때문에 하루종일(말그대로 진짜 하루종일) 고생한다. 예를들면 controller 메소드의 매개변수 순서(req,res,next)를 틀린거 때문에 이 메소드와 관련된 모든 코드를 뜯어봤다. 2. 원하는 기능과 결과를 직관적으로 확인하면서 코..
일기 나는 공부할때 집중이 안되면 뉴에이지 피아노 곡을 듣는다. 매번 들을때마다 피아노의 선율이 너무좋아서 배우고 싶어진다. 그러다 3주 전에 참을수 없어서 없는 돈을 쪼개 피아노 학원을 등록했다. 매일 6시 퇴근하면 학원으로 가서 9시까지 피아노를 치고 먼거리를 걸어서 집에 돌아와 잠을 잤다. 수수한 하농과 기본 연습곡 사이를 왔다 갔다하지만 나는 요즘 정말 행복하다. 웹 프로그래밍 공부도 쉬지않고 계획대로 이행했다 블로깅을 안했을뿐.. 나는 그동안 만들고싶었던 수수한 웹사이트들을 만들 준비가 됐다. 단순한 I/O 작업이 전부라 의도치않게 nodeJS의 장점을 살릴수 있다 ㅋㅋㅋ 웹사이트 개발하는건 1일 1커밋을 생각중이다. 커밋은 무조건 read.me에 적힌 기능 단위로 할것이다. 블로깅은 그동안 정리해둔..
flashMessage(connect-flash 패키지) 클라이언트가 웹사이트를 이용하다 요청 처리결과를 모르거나 알수없는 오류를 마주쳐서 당황하는것을 방지하기위해 미리 적어놓은 flashMessage로 요청 처리 결과나 에러를 띄워 줄 수있다. ex) "회원가입 완료" or "로그인 실패" flashMessage는 서버가 세션에 메시지를 저장한뒤 쿠키 데이터 형식으로 view(브라우저)에 응답해주는 방법으로 전해진다. flashMessage를 사용하기 위해서는 우선 세션을 미들웨어에 추가해줘야한다. Session npm i express-session -S const expressSession = require("express-session"); app.use(expressSession({ //이제 cookie-parser를 사용하지않아도 얘혼자서 parse..

반응형