일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자료구조
- wargame.kr
- GIT
- 이진탐색트리
- 웹개발
- 써니나타스
- materialize
- node
- mongoose
- nodeJS
- 자바기초
- 포렌식워게임
- NavBar
- CTF
- 웹해킹
- 자바
- 웹해킹기초
- Express
- gitbash
- 웹기초
- node.js
- 포렌식
- bootstrap
- 그래프
- 워게임추천
- MongoDB
- 워게임
- 이진트리
- 뷰
- 자바문제풀이
- Today
- Total
목록WEB/Node (17)
보안 전공생의 공부
머리 속에 틀을 더 정확히 잡고 이해하려고 정리했다. 부족한 부분에 대한 보충을 위해서 필요한 과정이다. 홈페이지에 구성을 조금 더 추가할 필요가 있다. 주소록은 다소 부실한 편이다. 여기서도 오류검사를 추가할 필요가 있다. 중간 정리를 하다보니 더 추가해야 될 부분이 눈에 보인다. 그리고 그 땐 어려웠던 함수가 한 눈에 정리하고 보니 그 함수의 역할과 기능을 단박에 이해할 수 있게 되었다 ! 앞으로 프로젝트든 뭐든 중간중간 정리를 할 필요성을 느끼게 되었다 :)
게시물과 사용자 사이에 관계(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..
passport package를 사용해 login 기능을 만든다. · passport : node.js에서 user authentication(사용자 인증, login)을 만들기 위해 사용하는 package 단독으로 사용 X , passport strategy package와 함꼐 사용해야 함 · passport strategy : 구체적인 인증 방법을 구현하는 package -> 인증 방법별로 수십가지(Facebook strategy, Twitter strategy, Naver strategy 등)가 존재하기 때문에 package가 나눠지게 되었다. 실제 한 사이트에서 사용하는 strategy는 이 중 몇 개밖에 안된다. 즉, 사이트에 필요한 인증밥법만 설치하기 위해 package를 분리한 것이다. [..
· 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..