Framework/Django

장고 50문 50답 채우기(3)

JM Lee 2023. 7. 24. 16:50
728x90

11. Django를 통해 CRUD를 구현하는 방법에 대해서 HTTP Method와 함께 설명하시오

  • get: 정보 조회 (read)
    post: 정보 업로드(create)
    put: 정보수정(update)
    delete: 정보 삭제(delete)

 

12. Django에서 테이블을 설계하고 데이터베이스에 반영하는 방법에 대해서 설명하시오

  • models.py에 models.Model을 상속해 클래스를 생성하고
    charfield, integerfield 등 필드를 사용해 테이블을 설계합니다.
    만들어진 테이블은 python manage.py makemigration 명령어로 
    migration 파일을 생성한뒤 python manage.py migrate로 반영합니다.

 

13. 회원가입을 할 때 비밀번호를 암호화하여 저장하는 이유는 무엇입니까?

  • 해킹에 취약해지기 때문에 유저정보를 다룰 수 있는 비밀번호는 해싱, 암호화해서 저장합니다.
    SHA-256표준 해시 알고리즘을 사용

 

14. JWT에 대해서 설명하시오

  • 토큰 기반의 유저 식별 인증 방법으로, 사용자 인증에 필요한 정보를 토큰에 포함합니다. 
    따라서 별도의 인증 저장소가 필요하지 않습니다.
  • JWT는 Header/Payload/Signature로 구성되어 있습니다.
  • Header는 알고리즘 정보와 토큰 타입을 포함하는 JSON 객체입니다. 주로 HMAC 알고리즘 혹은 RSA 알고리즘을 사용하여 토큰을 암호화하는 방식이 담겨 있으며, 'typ' 필드는 토큰의 종류를 나타냅니다. Header는 Base64Url 인코딩된 문자열로 변환됩니다.
  • Payload는 담을 정보를 포함하는 JSON 객체입니다. 이 정보를 클레임(Claims)이라고 부르며, 사용자 지정 정보와 등록된 클레임(예: 사용자 ID, 만료 시간)을 포함할 수 있습니다. Payload도 Base64Url 인코딩된 문자열로 변환됩니다.
  • Signature는 JWT의 무결성과 유효성을 보장하기 위해 사용됩니다. Header와 Payload를 인코딩한 문자열과 비밀 키(Secret)를 사용하여 생성되며, 서버가 이 Signature를 수정 여부를 판정해 인증하는 역할을 합니다. 이 세 부분은 각각 인코딩되어 문자열로 표현되며, 각 문자열 간에는 구분자인 점(.)을 사용하여 하나의 문자열로 형성됩니다.

 

15. JWT의 Access Token과 Refresh Token은 왜 필요한가요?

  • JWT토큰은 token을 가지고 있다는 것을 제외하면 클라이언트 본인이 맞는지 확인할 수단이 없습니다.
    따라서 어떤 의미에서는 보안이 취약한데 이를 보안해주는 것이 refresh token의 존재입니다.
    설정한 토큰 유효기간이 지나면 access token의 기간이 만료되고 refresh token을 가지고 access token을 새로
    발급받아서 token을 유지할 수 있게합니다.