본문 바로가기

분류 전체보기144

[OAuth] Github 소셜 로그인 구현하기 1. Github에서 OAuth app 추가하기https://github.com/settings/developers 로 들어간다.새로운 OAuth app을 추가한다.Homepage URL에는 해당 웹페이지의 주소를 넣고Autorization callback URL 은 응답 받을 주소를 입력한다.만들어둔 Application name을 클릭하여 아래 세팅으로 접근한다.Client ID와 Client secret을 잘 적어둔다.2. 로그인 과정GET : https://github.com/login/oauth/authorize?client_id=${process.env.CLIENT_ID}&redirect_uri=${redirect_URI}&scope=user:email 위 요청을 보내면 앞서 작성한 Autho.. 2024. 10. 17.
[Node.js] ORM은 뭘 써야 할까? 1. 일단 ORM이 무엇인가?ORM(Object-Relational Mapping)은 객체 지향 프로그래밍에서 객체와 관계형 데이터베이스의 데이터를 연결해주는 기술이다.직접 SQL을 작성하지 않고도 데이터베이스 작업을 진행한다.데이터베이스의 테이블을 애플리케이션의 클래스나 객체로 매핑한다.2. ORM의 장점생산성 향상 : SQL을 직접 작성할 필요 없으니, DB작업을 최소화 할 수 있다.유지보수 용이 : DB 관련 코드가 줄어들고, 비즈니스 로직과 DB로직이 분리되어 유지관리가 쉬워진다.재사용성 : ORM을 사용하면 DB시스템을 쉽게 교체하고, 동일한 코드로 여러 DB에 재사용이 가능하다.3. 대표적인 언어별 ORMNode.js의 TypeORM, Sequelize 등Java의 HibernateC#의 En.. 2024. 10. 7.
[암호화] Node.js의 암호화 모듈 1. bcryptBlowfish 암호를 기반으로 둔 암호화 해시 함수입력값을 고정된 길이의 출력값으로 변환입력값을 여러 번 반복해서 암호화하기 때문에 보안성이 매우 높다는 장접이 있지만, 안전한 암호화를 위해 암호화 속도가 느리다는 단점이 있다.특징고유 소금 사용 : 각 비밀번호에 고유한 소금을 추가하여 동일한 비밀번호라도 매번 다른 해시 값을 생성비용 인자(cost factor) : 비용 인자는 해시 연산의 복잡도를 설정하는 값으로, 해시 연산을 여러 번 반복하여 공격에 대한 저항력을 강화.보편적인 사용 : bcrypt는 광범위 하게 사용되며, 많은 시스템에서 지원장점보안성 : 해시 연산에 반복을 적용해 공격자의 비밀번호 추측을 어렵게 만듦.소금 적용: 소금을 적용해 동일한 비밀번호라도 해시 값이 다르.. 2024. 10. 2.
[SQL] 정규화 1. 정규화이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정따라서 여러 개의 릴레이션을 생성하게 된다.이를 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다.중복된 데이터를 허용하지 않는 다는 것이며, 정규화를 통해 무결성을 유지할 수 있고, DB의 저장 용량 역시 줄일 수 있다.2. 정규화의 장단점1) 장점DB 변경 시 이상 현상을 제거할 수 있다.정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.DB와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용프로그램의 생명을 연장시킨다.2)단점릴레이션의 분해로 인해 릴레이션 간의 JOIN 연산이 많아진다.질의에 대한 응답 시간이 느려질 수도 있다. 데이터의 .. 2024. 10. 2.