일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- java
- 자바
- Database
- iam사용자
- Express
- 패키지설치에러
- chatGPTAPI
- aws
- gitlab
- 웹소켓연결
- GPT3.5
- 버킷생성
- class
- db
- 웹소켓연결끊김
- 클래스
- Github
- openaiapi
- javascript
- gpt3.5turbo
- 웹소켓재시작
- gptapi
- ChatGPT
- 클라우드
- git
- nvmrc
- 호스팅영역
- 노드버전
- nodejs
- aiapi
- Today
- Total
목록Backend/Backend 기본 (19)
IT's Jenna
이번 포스팅에선 데이터 암호화에 대해 이야기해보겠다. 1. SHA-2(Secure Hash Algorithm 2) SHA-2란 값을 입력받으면 고정된 길이의 해시값을 출력하는 알고리즘이다. 즉, 사용자가 test1을 입력하던 test12345를 입력하던 같은 길이로 암호화를 해서 데이터 베이스에 저장이 된다. 이때 Hash는 단방향 암호화 기법이기 때문에 입력된 값을 해시값으로 변경하는 것은 가능하지만 해시값을 역산해서 값을 찾는 것은 불가하다. 그래서 데이터베이스에 유저 정보를 저장할 때 해시 알고리즘을 적용해서 저장하게 되고 그러면 해커들이 데이터베이스에 접근을 하더라도 실제 유저 정보를 확인할 수 없다. Hash와 함께 사용하는 것이 솔트라는 랜덤 텍스트이다. 입력 값을 해싱하기 전에 랜덤으로 문자..
전체 코드는 제 github에서 볼 수 있습니다. https://github.com/Jungeun-Pyun/ASYNC_DESIGN_PATTERN Jungeun-Pyun/ASYNC_DESIGN_PATTERN Contribute to Jungeun-Pyun/ASYNC_DESIGN_PATTERN development by creating an account on GitHub. github.com 코드를 작성하다보면 반복되는 동작이 많다. 불필요한 반복을 제거하기 위해 자주 사용되는 동작을 하나의 함수로 저장해 두고 필요할 때마다 가져와서 쓸 수 있다. 또한 이렇게 반복적으로 사용되는 함수들을 종류별로 파일에 정리한다. 이것을 모듈화라고 한다. Database 상태변화(CRUD) 코드를 모듈화 해보자 반복되는 ..
목표 : DB에 CRUD 동작을 하는 쿼리문을 만들어 보자 1. createPool 우선 express를 활용해서 goods라는 라우팅 환경을 하나 만들었다. 여기서 mysql과 통신해서 쿼리문을 동작시키고자 한다. 이때 서버와 mysql의 연결을 위해 사용하는 것이 createPool이다. Pool은 database 연결 캐시*이다. Pool을 사용하면 다수의 connection을 관리할 수 있고, 매번 connection을 새로 만들 필요 없이 기존의 connection을 재활용할 수 있다. 캐시 : 데이터나 값을 미리 복사해둔 임시 장소. 데이터에 접근하는 시간이나 계산하는 시간이 오래 걸릴 때 시간을 절약하기 위해 미리 복사본을 만들어 둔 것 아래와 같이 config라는 폴더 내 index.js파..
Javascript는 기본적으로 비동기 (Non-Blocking) 프로그래밍이다. 비동기 시스템이란, 동작이 스크립트가 작성된 순서대로 진행되는 것이 아니라 결과값이 먼저 나오는 순서대로 진행되는 것이다. 비동기 시스템은 주로 퍼포먼스가 극대화되어야 하는 웹/앱에서 많이 사용된다. 1. Non-Blocking fs.readFile('./file.md', (err, data) => { if (err) throw err; console.log('non blocking data : ',data); }); console.log('wow') //result //wow //non blocking data : 스크립트가 작성된 절차대로 수행된다면 데이터가 먼저 출력되고 wow가 출력되겠지만, 비동기 방식은 그렇지 않..
Injection attack이란? 외부에서 서버에 쿼리문을 보내, 데이터 베이스를 추출하거나 임의로 조작하는 행위 Injection attact 사례 router.get('/', function(req, res, next) { console.log('query : ', req.query) let {idx, name} = req.query console.log('idx : ', idx, 'name :', name 'idx type : ', typeof idx) // idx : 1 name : asdf idx type : string let sql sql = 'SELECT * FROM Goods WHERE idx = "'+idx+'"' pool.query(sql, function(error, results..
Express에서 라우팅 하기 라우팅이란 Url로 전달받은 path의 경로에 따라 클라이언트에 응답하는 정보를 달리 하는 것이다. 이전 포스팅에서 Express 구조를 설명할 때, routes 폴더 안에 서버에 필요한 데이터 저장 및 동작을 설정할 수 있다고 했다. routes/users.js의 구조 Express 모듈 require 한다. Express 모듈 중 routing에 필요한 함수들의 모음인 Router()를 router라고 명명한다. router.method(‘method 적용 경로’ , 미들웨어 함수) : method가 실행되면 라우팅 경로에 미들웨어 함수가 동작한다. router에 설정한 모듈들을 외부에서 사용할 수 있도록 export 한다. users.js 파일에서 설정한 모듈들을 모두..