본문 바로가기
반응형

Archive188

서버를 cloude server 에 배포할때의 고민 외주업무에 필요한 express API서버를 naver cloud platform server에 올렸다. 하지만 네이버클라우드플랫폼에서는 1년간 무료로 제공하는 micro 이미지의 메모리가 1GB 밖에 되지 않는다. 정말느렸다. docker환경에서 배포를 진행했는데, 컨테이너를 키는데 소요되는 명령어 하나하나에 20초는 기다렸던것 같다. 메모리 문제라생각된다. 이전에 AWS EC2에서는 이런일이없었다.. 그건 프리티어가 4GB였다.(알고보니 EC2도 1GB..) 이때 1GB에서 docker를 돌리기에 무리인건가? 라는 생각을했다. 참고로, express 서버 두개와 mariadb 1개를 포함한 총3개의 컨테이너를 돌리고있었다.(버거울만 하기도..) 번외로, 나는 서버를 관리할때 아직 CI/CD 는 익숙지.. 2022. 4. 17.
access denied for user 'root'@'% ' to database 를 마주했다면 mysql 이나 mariadb를 사용할때 권한이 없다면 발생하는 문제입니다. 일반적으로 root@localhost 에게는 모든 권한이있지만, workbench와 같은 툴을 사용해서 원격으로 db에 접속하게된다면 root@접속한아이피 로 접속을 하게됩니다. 여기서 root@%는 모든 아이피를 의미합니다 workbench로 접속하여 스키마를 생성하거나, 백업한 데이터를 import 할때, 제목과같은 에러가 난다면 db에 접속한 유저에게 db를 다룰 권한이 없음을 의미합니다. 그럴땐 db가 설치된 터미널로 가셔서, mysql(mariadb)에 접속하신 후 아래와같은 명령어로 모든 권한을 부여하시면 됩니다. GRANT ALL PRIVILEGES on *.* TO 'root'@'%' WITH GRANT OPTI.. 2022. 4. 9.
[node express] JWT json web token 사용할때 유의할 점은 token에 모든걸담으면안됩니다. token은 공식사이트에서나, 그냥 decode() 함수를 이용해서 모두 노출이 될수있고, 만약 token이 수정됬는지를 판단하는 것을 verify()로 검증 할 수 있습니다. 즉, 토큰을 검증된 수단으로, 서버에게 인증할 수단으로 사용해야하지, 모든데이터, 많은데이터를 담으면 그대로 노출되는 것입니다. const jwt = require("jsonwebtoken"); const secretKey = "koha"; const token = jwt.sign( { id: "kong12", username: "kong", age: 25, }, secretKey, { expiresIn: "1 days" } ); const resu.. 2022. 4. 4.
express bcrypt 로 암호화 하는법 bcrypt 암호화 예시 const bcrypt = require("bcrypt"); const pw = "kong1234"; const hashed = bcrypt.hashSync(pw, 10); // salt가 증가할수록, 연산 시간이 기하급수적으로 늘어난다. console.log(pw); // kong1234 console.log(hashed); // $2b$10$0xFKk6zY/Fuu/.pidoKxK.9LEgR41hGK4uhkhTP/RGY.VxOpMNmLW const result = bcrypt.compareSync(pw, hashed); console.log(result); // true 2022. 4. 4.
서버에서의 인증 Authentication(로그인) 과 bcrypt Authentication Session & Cookie User의 인증정보를 서버에서 Session 데이터로 가지고 있기 때문에, 가장 신뢰할 수있는 데이터이다. Cookie를 사용하기때문에, 통신이 간단하다. Http only옵션을 사용할 경우 브라우저에서는 안전하다. 사용자의 정보를 주고받지않고, 세션ID를 주고받기때문에 안전하다. 서버가 Stateful 하다는 단점이있다.(서버가 여러대이면, session을 공유하기 위한 자원이 소모된다) JWT (JSON Web Token) JSON을 이용해서 Web Token을 주고받는 것을 말합니다. Header, Payload, Signature 으로 구성되있다. 모든 데이터들이 인코딩 되어있기 때문에 안전하다. 서버에서만 보유하고있는 secret키를 이용.. 2022. 4. 4.
[7] 필수와도 가까운 express 미들웨어 유용한 미들웨어 app.use(cors()); //cross-origin 설정 app.use(express.json()); // REST API body 파싱 app.use(express.urlencoded({ extended: false })); // HTML Form body 파싱 app.use(express.static("public")); // 정적 리소스 제공 app.use(cookieParser()); // request의 cookie 파싱 app.use(morgan("dev")); // 요청에대한 log 표시 app.use(helmet()); // 각종 보안관련된 header 세팅 helmet이 추가해주는 header 각종 보안에 필요한 header들을 추가해준다. 자세한 사항은 helmet.. 2022. 4. 3.
반응형