컴퓨터언어(271)
-
[OAuth] 로그인 인증과 개인정보 관리는 대기업에 맡기자
OAuth의 특징 3가지 (나의 새로운 웹서비스를 페이스북에 연결하는 것을 예로 든다면) 1. 페이스북에서 프로필 사진 또는 이메일, 친구목록 등 내가 원하는 다양한 정보를 세분화하여 가져올 수 있다. 2. 페이스북으로부터 읽기 전용 또는 페이스북에 쓰기까지 할 수 있다. 3. 페이스북에서는 언제든지 연결된 계정을 해제할 수 있다. 즉 OAuth를 활용하면 친구목록을 가져옴으로써 파생되는 다양한 기능을 이용할 수 있고, 개발자 입장에서도 관리가 편하다. 사용방법 1. 내 웹서비스를 완성한다. 2. 페이스북이나 깃허브 등 개발자 콘솔에 내 웹서비스 정보를 입력한다. 3. App ID(Clien ID)를 부여받는다. 4. 내가 필요로 하는 개인정보를 수집하는 데 동의하는 유저에 한해서 로그인 인증을 진행한다..
2020.05.17 -
[Passport] Cookie, Session을 활용하여 로그인 상태를 기억하는 웹페이지를 만들어보자
쿠키와 세션은 모두 브라우저가 서버와 통신할 때 사용되는 개념이다. 쿠키는, 사용자가 해당 웹사이트에 방문하고 행동한 것을 저장한 후, 재방문했을 때 이전의 최종 행동에 기반하여 맞춤형 정보를 제공해준다. 즉 클라이언트가 웹사이트에 접속하면, 먼저 GET으로 페이지를 렌더링한다. 그리고 이어서 클릭 등의 여러가지 POST 요청을 하게 되고, 서버는 그에 맞는 Response와 함께 브라우저에 쿠키를 심어놓는다. 그래서 이후에 다른 GET 요청이 있는 경우에도 이전 POST 요청과 유사한(광고 등 관심사 노출) 또는 동일한(유저 로그인상태 또는 찜목록) 정보를 보여줄 수 있는 것이다. 세션은, 브라우저가 로그아웃 등으로 끊기지 않으면서 서버와 지속적으로 통신하고 있는 진행 시간을 의미한다. 예를 들어 아이..
2020.05.17 -
[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