컴퓨터언어/Database(39)
-
[bcrypt] Hashing의 보안을 더 높인 Salting Round
데이터베이스에 회원정보를 보관할 때, MD5같은 해시함수를 사용하면 상당한 보안을 갖출 수 있다. 하지만 유저가 비밀번호를 단순하게 설정한다면 말이 달라진다. 왜냐하면 해시함수는 서로 같은 입력값에 대해 언제나 동일한 해시를 출력하게 때문에, 일명 "자주 사용되는 비밀번호"는 "자주 사용되는 해시"와 같은 말이 되고, 이는 해커가 해시 테이블만 가지고 있다면 다 뚫린다는 의미가 된다. 이렇게 유저들이 단순하게 비밀번호를 설정함으로써 바람직하지 않은 결과를 초래하는 것을 방지하기 위해 등장한 개념이 Salting이다. Salting은 음식에 간을 치듯이, 유저가 어떤 비밀번호를 설정했든지 상관없이, 거기에 난수까지 추가하여 해시함수에 집어넣는 것이다. 즉 비밀번호의 복잡도를 키워 보안을 높이는 것이다. *..
2020.05.17 -
[Mongoose Encryption] DB를 활용한 유저인증 방식
https://stackoverflow.com/questions/454048/what-is-the-difference-between-encrypting-and-signing-in-asymmetric-encryption What is the difference between encrypting and signing in asymmetric encryption? What is the difference between encrypting some data vs signing some data (using RSA)? Does it simply reverse the role of the public-private keys? For example, I want to use my private key to stack..
2020.05.16 -
[Mongoose REST API] PATCH와 body-parser, 그리고 HTML의 name과 value
PATCH는 클라이언트가 업데이트 하고자 하는 필드만을 공략해주는 메서드다. 이때 클라이언트가 "글의 내용을 'Hello'로 업데이트해주세요"에 해당하는 것이 app.patch() 메서드 내의 {$set: {title: "Hello"}} 인자이다. https://mongoosejs.com/docs/api/model.html#model_Model.update Mongoose v5.9.14: Parameters doc «Object» values for initial set optional «[fields]» object containing the fields that were selected in the query which returned this document. You do not need to se..
2020.05.15 -
[Mongoose REST API] PUT, PATCH : 업데이트 & {overwrite: true}란?
PUT PATCH 용도 선택된 항목(URL)에 해당하는 {} 객체를 통째로 업데이트하기 선택된 항목(URL)에 해당하는 {} 객체 내 특정 필드를 업데이트하기 방법 모델이름.update( {조건필드이름:그값}, {overwrite:true}, 에러처리콜백함수 ) 모델이름.update( {조건필드이름:그값}, {$set: {바꿀필드이름:바꾼후값}, ... }, 에러처리콜백함수 ) 주의 PUT에서는 overwrite 인자를 사용해야 한다. PATCH에서는 set 인자를 사용해야 한다. PATCH는 원래 존재목적 자체가 원하는 특정 필드만을 골라서 업데이트하기 때문에, {$set: {}} 인자가 필요한 것이 이해가 된다. 그런데 PUT에서 {overwrite: true} 인자는 왜 필요할까? 이 인자가 없는 ..
2020.05.15 -
[REST API] 뿌시기 by Node.js & Mongoose
API라는 말을 처음 들은 때가, 아마 어느샌가 N사의 "지도 API"라는 단어가 흥하기 시작한 때였던 것 같다. 그때까지만 해도 API하면 생각나는 것은 그냥 "지도"였고, 그 지도 자체를 의미하는 프로그램인 줄 알았다. 하지만 더 알아갈수록 빙산의 일각이었음을 깨달았다. API란, 어떤 Web의 사용자인 클라이언트와 정보 제공자인 서버가 HTTP라는 약속된 언어로 통신할 때, 그 서버가 제공하는 메뉴판이라고 보면 된다. 레스토랑에서 다양한 음식을 메뉴판으로 제공하는 것과 마찬가지로, 사이트는 서버가 가지고 있는 홈페이지의 모습, 구성요소, 로그인정보 뿐 아니라 서버DB 내 특정 파일 등 다양한 정보를 URL로 제공하는 것이다. 즉 클라이언트는 해당 웹사이트에서 제공되는 페이지 등 정보를 보여달라고 U..
2020.05.14 -
[Mongoose] db.~.find() VS db.~.findOne()
결과 쿼리 비교 상황 find : 여러 {} 객체로 이루어진 [] 배열을 반환 findOne : 하나의 {} 객체를 반환 파라미터로 조건 쿼리가 없을 때 모든 Document들을 반환 모든 Document들 중 가장 첫 번째만 반환 파라미터로 조건 쿼리가 있으며, 해당 조건을 만족하는 Document가 여러 개 조건을 만족하는 Document를 반환 조건을 만족하는 Document 중 가장 첫번째만 반환 파라미터로 조건 쿼리가 있지만, 해당 조건을 만족하는 Document가 0개일 때 아무 일도 일어나지 않음 null 반환
2020.05.13