❤️🔥TIL : Today I Learned❤️🔥
그날그날 내가 공부한 것을 정리하는 것
내일배움캠프 AI트랙 31Day
1. 오늘 배운 내용
Django 타임어택 테스트
요구사항
1. 프로젝트 폴더를 생성하고 가상 환경을 생성 및 실행 해주세요
2. django 패키지를 설치하고, requirements.txt에 설치 된 패키지를 저장해주세요
3. sparta라는 이름으로 django 프로젝트를 생성해주세요
4. github에 새로운 리포지토리를 생성해주세요
5. .gitignore 설정 후 sparta 프로젝트를 푸시해주세요
6. user라는 이름의 브랜치를 생성하고 이동해주세요
7. user 앱을 만들고 settings.py에 등록해주세요
8. 아래 내용을 참고해 User 테이블을 생성해주세요
- AbstractUser 상속
- 핸드폰번호, 주소 필드 추가
9. 첨부 된 signup.html 템플릿을 활용해 /signup 경로로 접속할 경우 회원가입 페이지를 띄워주고 회원가입 기능을 구현해주세요(회원가입 시 로그인 페이지로 redirection 해주세요)
10. 첨부 된 login.html 템플릿을 활용해 /login 경로로 접속할 경우 로그인 페이지를 띄워주고 로그인 기능을 구현해주세요(로그인 시 home 페이지로 redirection 해주세요)
11. 첨부 된 home.html 템플릿을 활용해 /home 경로로 접속할 경우 메인 페이지를 띄워주고 로그인 하지 않은 사용자는 로그인 페이지로 접속하도록 해주세요
12. 작업 내용을 user 브랜치에 푸시하고, 메인 프렌치에 Pull Request를 요청해주세요
13. main 브랜치에서 user 브랜치의 작업 내용을 머지해주세요
구현 결과
https://github.com/LeeHyunji/quiz_django
이슈사항 - 패스워드 암호화 이슈 사항
장고에서 유저 비밀번호를 설정할때, 평문으로 작성하면 안된다.
원래였으면 create_user()로 생성했을텐데
그냥 User()로 생성해서 항목 하나씩 넣을려고 하니깐 로그인시 auth가 제대로 사용되지 않았다.
( 오타 나서 로그인이 안되는 줄 알았다... 타임어택이라 촉박했는데 회원가입을 몇번이나 했는지 모르겠다 ㅠ)
그래서 다시 만든다는 느낌으로 강의때 배웠떤 create_user()로 코드를 재작성하니
갑자기 된다...?! 되는데.. 묘하게 기분이 나쁘다.
db.sqlite를 살펴보니 create_user()로 작성한 다른 데이터와는 다르게 그냥 평문으로 작성했던 test12 패스워드가 묘하게 정직하게 들어가 있었다. 평문으로 작성한 것은 암호화가 안된거였다.
Django가 csrf와 같이 flask에 비해 보안에 민감한 프레임워크인지 auth 기능을 제대로 사용할려면 여러가지 보안규칙을 따라줘야하는 것 같다. 특히 패스워드같은 민감데이터에 대한 암호화는 필수이니 기억해두자.
1. set_password로 암호화 하기
new_user = User()
new_user.username = user.name
new_user.set_password(password) # set_password로 암호화
new_user.phone = phone
new_user.address =address
new_user.save()
2. create_user로 암호화 하기
User.objects.create_user(username=username,
password=password,
phone=phone,
address=address)
'I learned' 카테고리의 다른 글
내일배움캠프 AI - TIL 33 (1) | 2022.10.18 |
---|---|
내일배움캠프 AI - TIL 32 (0) | 2022.10.17 |
내일배움캠프 AI - TIL 30 (1) | 2022.10.13 |
내일배움캠프 AI - TIL 28 (0) | 2022.10.11 |
내일배움캠프 AI - WIL 6주차 (0) | 2022.10.07 |