본문 바로가기

About coding/Today I learned

2023년 06월 08일 TIL [#dotenv 시크릿 키 #깃 커밋수정하기 #브랜치삭제]


오늘의 학습 계획

_회원가입 및 로그인 풀리퀘스트

_dotenv 패키지로 파일 숨기기

_회원수정 기능 구현

_회원탈퇴 기능 구현


기록하고 싶은 학습내용

_장고 환경변수 숨기기:

django로 백엔드 개발하다보면 settings.py에 시크릿키 라는 게 있는데, 외부에 유출되면 보안문제가 생긴다.

이런 환경변수를 숨기는 방법에는 내가 아는 것만 꼽아도 3가지가 있다.

1. .env 라는 파일에 숨기는 법

2. secret.json 파일에 숨기는 법

3. 이번에 새로 팀원분께 배운 my_settings.py에 숨기는 법

 

이 세가지 모두 구동 가능한데, 왠일인지 3번을 사용하면 로그인 기능을 구현하고 포스트맨으로 테스트 할 때

string expected error가 난다. 다른 팀원은 my_settings.py 방식으로 했어도 문제가 없었다는 걸 보니

아무래도 원인은 파이썬 버전 차이인 것 같다.

나는 파이썬 3.8.10 으로 구동했고, 괜찮았다는 분은 3.10.? 버전이었다고 하니깐.

그래서 다시 dotenv라는 패키지를 받아서 .env파일에 숨기는 방식으로 고치는 작업을 했다.

 

구체적인 방법.

 

먼저 아래 코드로 패키지를 설치함

pip install django-dotenv

 

manage.py와 동등한 위치에서 파일 만들기 해서 .env 파일을 생성한 다음에 그 안에 다음 코드를 넣는다.

SECRET_KEY = '나의 장고시크릿키'

 

settings.py로 가서 아래 코드를 써넣는다.

import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

SECRET_KEY = os.environ.get("SECRET_KEY")

 

manage.py에 다음 코드를 추가

import dotenv

if __name__ == "__main__":
    dotenv.read_dotenv()
    main()

 

그리고 마지막으로 반드시!! .gitignore에 .env가 추가되었는지 Ctrl + F 로 확인한다. 없으면 추가.

.env

 

만약 이렇게 설정하기 전에 장고 시크릿키가 settings.py에 들어가 있는 그대로 커밋한 적이 있다면

이미 유출된 것이다. 푸시를 안했어도 후에 푸시를 하게 되면 커밋로그가 들어가서 유출이 된다.

그럴땐 새로 시크릿키를 받으면 된다.

아래 코드를 터미널에 입력.

python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'

 

 

_깃 커밋 수정하기

(1) 커밋메시지만 수정하는 방법이 있고

(2) 스테이징한 내용까지 더 추가 스테이징해서 커밋을 하는 방법이 있다.

 

(1) 먼저 커밋메시지만 수정하는 방법:

터미널에

$ git rebase -i HEAD~10

#HEAD~ 뒤에 오는 숫자가 최근 커밋으로부터 몇 번째 커밋까지 소환할 건지 정하는 숫자.

그럼 아래와 같은 커밋 목록 화면이 나온다.

요기서 수정을 위해 i를 눌러서 끼워넣기 모드로 바꾸고, 나의 커밋 목록에서 수정하고 싶은 왼쪽에 pick으로 된 부분을 reword로 바꾼 뒤 Esc > :wq > 엔터 하면,

내가 reword로 바꾼 모든 커밋들의 커밋메시지 에디터 화면으로 진입한다.

거기서 자유롭게 커밋들의 제목과 내용을 다시 수정하면 됨!

 

 

(2) 스테이징한 내용까지 더 추가 스테이징해서 커밋을 하는 방법:

이번에는 이미 커밋을 했는데 실수로 코드 한 두 줄을 빼먹었음을 알아차렸을 때 유용한 코드를 알아본다.

일단은 실수로 빼먹은 부분을 수정한 뒤 git add 로 스테이징 하고서

$ git commit --amend

이렇게 하면 커밋메시지 에디터가 켜지면서 수정할 수 있는 기회가 생기는데,

수정을 완료하면 표면적인 커밋 메시지 뿐만 아니라 종전에 새롭게 스테이징한 파일 변동사항까지 함께 커밋이 된다.

 

 

 

_깃 브랜치 삭제하기

팀으로 작업할 때, 무언가 기능을 만들어서 성공적으로 풀리퀘스트를 보내고 머지까지 끝내고 돌아오면

내 로컬에 작업하던 브랜치가 나를 기다리다가 'ㅎㅇ 풀리퀘스트 잘 보내고 왔어?' 하는 수가 있다.

그럼 그 브랜치를 삭제해 주어야

여러 기능을 만들때마다 브랜치가 쌓이지 않고 깔끔하게 깃을 관리할 수 있다.

그럴 때 쓰는 명령어

$ git branch -D <브랜치명>

혹은

$ git branch -d <브랜치명>

아래 꺼를 쓰면 소프트 딜릿으로서 내가 지우려는 그 브랜치가 한번도 푸시한 기록이 없는지 깃이 알아서 함 더 점검을 해주고, 푸시한 적이 없으면 경고해준다. '너 이 브랜치 공적으로 보낸적도 없잖아, 정말 지울거야?'

 

위에 꺼를 쓰면 묻지도 따지지도 않고 이순재 할아버지가 나와서 내 브랜치를 지워준다.