오늘 한일
- 대화방에서 유저가 회원탈퇴를 하지 않았는데 메시지가 출력되지 않는 오류가 발생하였습니다. API를 테스트하면서 발생하였던 것 같은데, DB 구조를 다시 살펴보면서 오류를 확인할 수 있었습니다. Messages 테이블과 연결되어있는 userId가 Users 테이블과 연결되어있는 것이 아니라 Channels 테이블에 연결이 되어있어 대화방을 나가면 메시지의 userId가 삭제되어 오류가 발생하였습니다. ALTER TABLE 명령어로 외래키 속성을 변경해 오류를 해결할 수 있었습니다.
- Joi 모듈에서 replace를 사용해 SQL Injection을 해결하였습니다. SQL Injection은 Sequelize Raw Query를 많이 사용하고 있는 실전 프로젝트의 코드 최적화 최우선 순위였던 문제점이었습니다. 프로젝트를 진행하면서 Joi를 사용해 형식, 글자 수, 최솟값, 최댓값 등 보안을 위해 검출을 하고 있었지만, String을 사용하는 부분에서는 이메일 형식, 패스워드를 제외하고는 확실한 Pattern을 등록하지 않아 걱정이 가득하였습니다. 로그인, 검색 키워드 등 많은 API에서 String 형식에 대해서만 검출하고 있어 Joi.replace를 이용해 정규표현식으로 특수문자를 삭제하도록 설정하였습니다.
- NGINX를 이용해 EC2에서 React를 연동하였습니다. React에 구조를 모르는 상태에서 서버를 열기 위해 yarn start를 사용하였습니다. 하지만 EC2에 부족한 연산 성능과 yarn start가 잡아먹는 트래픽이 너무나도 많았고, 다른 방법으로 실행할 수 없는지 찾아보았습니다. React에서는 Build를 통해 배포용 버전을 만들 수 있고, NGINX와 연동할 경우 자원을 많이 사용하지 않고 배포할 수 있다고 확인하였습니다. build 파일의 위치를 지정하는 NGINX 서버 설정을 마치고 도메인 연결을 하였고, 서버에 접속이 정상적으로 실행되는 것을 확인하였습니다.
- localhost에서 React 프로젝트를 실행했을 때와 도메인을 거쳐 외부에서 실행하는 경우 GPS 데이터를 가져오지 못하는 오류가 발생하였습니다. 외부와의 접속이 문제인가 싶어 Build 프로젝트를 노트북에서 실행해보았고, GPS 데이터를 가져오지 못하면서 Build에서 발생하는 오류인 것을 확인하였습니다. React에 대한 코드를 제가 구성한 것이 아니다 보니 오류 사항에 대해 프론트 엔드 분들에게 말씀드렸고, 팀장 주간 회의 전까지는 오류 수정이 가능할 것 같습니다.
업무 리스트
- Messages userId 외래키 Channels > Users로 수정 [10:14]
- 회원 탈퇴한 유저의 Message를 닉네임 및 프로필 사진 삭제 후 출력
- 유저가 대화방에 입장한 이후의 대화만 출력
- Joi Schema SQL Injection 방지 구현 [10:58]
- EC2 리액트 서버 구현 [14:02]
- EC2 리액트 서버 KakaoMap 인증 오류 수정
- EC2 NIGNX React 연동 [20:25]
오늘 배운 것
- Linux NGINX 사용법
- React 구조
- Joi.replace
- iptables
내일 할 것
- 팀장 주간 회의
- 중간발표 대비 회의록 작성
- (가능하다면) Redis 적용
'항해99 > TIL' 카테고리의 다른 글
2021-08-14 항해99 TIL (0) | 2021.08.14 |
---|---|
2021-08-13 항해99 TIL (0) | 2021.08.14 |
2021-08-11 항해99 TIL (0) | 2021.08.12 |
2021-08-10 항해99 TIL (0) | 2021.08.11 |
2021-08-09 항해99 TIL (0) | 2021.08.10 |