다음과 같이 몽고디비의 접속 URL에는 아이디와 비밀번호가 입력되고, 데이터베이스 아이피가 추가로 입력됩니다. 제가 일하는 팀에서는 개발자에게는 데이터베이스의 아이피를 별도의 호스트 파일에 등록하여 localhost 또는 dbhost 와 같은 도메인 이름으로 사용하는 것을 추천합니다. 아이피를 알지 못하면 계정정보를 알아도 해킹할 수가 없다고 합니다. 그리고 직접 데이터베이스에 접속해서 데이터를 변경하는 경우에는 항상 VPN을 사용하도록 설정하여 보안을 유지할 수 있습니다.
대부분의 해킹은 잘못된 코딩에 의해서 발생합니다. 따라서 JSON API를 설계하는 경우에 접근 키가 없이 데이터를 조회한다던가, 버전이 오래된 SQL 라이브러리를 사용하는것은 보안에 위협이 될 수 있습니다.
mongodb+srv://<아이디>:<비밀번호>@<아이피>/<데이터베이스명>?retryWrites=true&w=majority
mongoose를 이용한 코드입니다. 환경변수 파일(.env)를 생성하여 DATABASE_URL을 정의한 후, 아래와같이 모듈 코드에서 사용할 수 있습니다. 환경변수 파일은 .gitignore 파일에 추가하여 업로드 되지 않도록 주의해야 합니다.
// 환경변수 파일 불러오기
const dotenv = require("dotenv");
dotenv.config();
// 몽구스 로딩
const mongoose = require("mongoose");
// 모듈 생성
const connect = async () => {
const DATABASE_URL = process.env.DATABASE_URL;
try {
let connection = await mongoose.connect(DATABASE_URL, {
useUnifiedTopology: true,
useNewUrlParser: true,
useFindAndModify: false,
useCreateIndex: true
});
console.log("MongoDB connected");
return connection;
} catch (err) {
console.log(err);
console.log(`Connection failed with config ${DATABASE_URL}`);
process.exit(1);
}
};
// 모듈 익스포트
module.exports = connect;
[Node/Rest API] 필요한 미들웨어 등록하기 (0) | 2020.11.10 |
---|---|
[Node/Rest API] 환경변수 파일 만들기 (0) | 2020.11.10 |
[Node/Rest API] ACCESS_TOKEN / CSRF_TOKEN 처리 (0) | 2020.11.09 |
[Node/Tutorial] Blocking / Non blocking 코드 (0) | 2020.11.09 |
[Node/Tutorial] npm 으로 패키지 설치하기 (0) | 2020.11.09 |