일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 워게임
- 웹해킹기초
- 포렌식워게임
- 자바기초
- bootstrap
- 써니나타스
- materialize
- 웹기초
- 웹해킹
- 이진트리
- mongoose
- GIT
- 자바문제풀이
- 자바
- 이진탐색트리
- MongoDB
- 자료구조
- node.js
- gitbash
- 포렌식
- nodeJS
- NavBar
- 그래프
- 워게임추천
- Express
- CTF
- 웹개발
- 뷰
- wargame.kr
- node
- Today
- Total
목록nodeJS (13)
보안 전공생의 공부
게시물과 사용자 사이에 관계(relationship)을 만들어서 게시물(document)에 작성자(document id)를 기록하여 글 작성자 정보를 알 수 있게 만든다. 자신의 글은 삭제 가능/타인의 글은 삭제가 불가능하게 만들기 위함이다. · schema 수정 post schema에 author을 추가하였다. ref: 'user'를 통해 이 항목의 데이터가 user collection의 id와 연결됨을 mongoose에 알린다. user의 user.id와 post의 post.author가 연결되어 user과 post의 relationship이 형성된다. - 참조하기 좋은 글 : https://catnap-jo.tistory.com/entry/Mongoose-%EB%AA%A8%EB%A5%B4%EB%8A..
routes/userjs에서 사용한 parseError함수를 post에서도 사용하여 post의 error를 처리한다. -> 여러 파일에서 사용하게 될 함수들을 하나의 module로 분리 // util.js const util = {}; util.parseError = function(errors){ const parsed = {}; if(errors.name == 'ValidationError'){ for(const name in errors.errors){ const validationError = errors.errors[name]; parsed[name] = { message:validationError.message }; } } else if(errors.code == '11000' && erro..
· edit.ejs 수정 Edit User Current Password* Username* Name* Email New Password Password Confirmation *Required Back Submit user.username 대신 router에서 받은 username 사용 class="form-control " 각 항목의 form-group class가 있는 div에 위 코드가 추가되었다. 에러가 있으면 bootstrap의 invalid-feedback class를 사용한다. 서버 측에서 유효성 검사를 사용한 것이다. ( 참조하기 좋은 글 : https://getbootstrap.kr/docs/5.0/forms/validation/ ) input 밑에 위 코드를 추가하여 에러메세지를 보여..
· flash : 변수처럼 이름과 값(문자열, 숫자, 배열, 객체 등 어떠한 형태의 값이라도 사용 가능)을 저장할 수 있는데, 한 번 생성되면 사용될 때까지 서버 메모리상에 저장이 되어 있다가 한 번 사용되면 사라지는 형태의 data -> connect-flash package를 이용하여 flash · regex(Regular Expression, 정규 표현식) : 특정규칙을 가진 문자열의 집할을 표현하는 데 사용하는 형식 언어 (출처 :https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D) 문자열이 특정한 형식을 가지고 있는지 아닌지를 판단하기 위해 사용함 ->User의 username, password, name, e..
user의 비밀번호가 그대로 DB에 저장되도록 코드를 작성하였는데, 이는 낮은 보안성이다. 보안성을 높이기 위해서는 비밀번호가 hash처리가 되어야 한다. · hash : hash 알고리즘으로 생성된 값 결과값과 알고리즘을 알아도 원래 data를 알 수 없다(복원불가)! function hashFunc(inputNum) { var str = inputNum.toString(); var result = str[0] + str[str.length-1]; return result; } 위의 hash알고리즘 함수는 입력된 값의 첫번쨰 자리값+마지막자리값을 return한다. 1을 넣으면 11, 2321을 넣으면 21dl return된다. 결과값과 알고리즘(함수)를 알더라도 입력값을 정확히 알 수 없다. 결과값이 ..
회원가입은 회원(user) model을 만들고, 회원 데이터를 생성해(CRUD-create) DB에 저장하면 된다. 다만 주의해야할 점이 비밀번호가 추가된다는 점이다. // models/User.js const mongoose = require('mongoose'); // schema const userSchema = mongoose.Schema({ username:{type:String, required:[true,'Username is required!'], unique:true}, password:{type:String, required:[true,'Password is required!'], select:false}, name:{type:String, required:[true,'Name is r..
// public/js/script.js $(function(){ function get2digits (num){ return ('0' + num).slice(-2); } function getDate(dateObj){ if(dateObj instanceof Date) return dateObj.getFullYear() + '-' + get2digits(dateObj.getMonth()+1)+ '-' + get2digits(dateObj.getDate()); } function getTime(dateObj){ if(dateObj instanceof Date) return get2digits(dateObj.getHours()) + ':' + get2digits(dateObj.getMinutes())+ ':..
· bootstrap : 빠르고 간편한 html, css, js 프레임워크 https://getbootstrap.com/docs/4.1/getting-started/introduction/ Introduction Get started with Bootstrap, the world’s most popular framework for building responsive, mobile-first sites, with BootstrapCDN and a template starter page. getbootstrap.com 위 bootstrap 공식 사이트에서 제공하는 방법으로 bootstrap을 설정한다. My Website viewport는 display상에서 웹페이지가 보여지는 영역이다. 데스크탑 viewp..