Email validation

Woo Hwukjun·2020년 12월 22일
0

message.py

def message(doamin, uid64, token):
    return f"아래 링크를 클릭하면 회원가입 인증이 완료됩니다.\n\n회원가입 링크 : http://{doamin}/user/emailcheck/{uid64}/{token}\n\n감사합니다."

#domain- current site domain
#uid- urlsafe base64 encode force bytes (user.pk)
#token - account activation toekn make token(user)

settings.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = '587'
EMAIL_HOST_USER = 'hwukjunwoo@gmail.com'
EMAIL_HOST_PASSWORD = my_settings.DATABASES.password
EMAIL_USE_TLS = True
# TLS 보안 방법
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
# 사이트와 관련한 자동응답을 받을 이메일 주소,'webmaster@local

TlS

  • 클라이언트/서버 환경에서 TCP기반의 Application에 대한 종단간(End to End) 보안서비스를 제공하기 위해 만들어진 전송 계층 보안 프로토콜이다.
  • SSL/TLS에서는 대칭키 암호, 공개키 암호, 일방향 해시함수, 메시지 인증코드, 의사난수 생서기, 전자서명을 조합해서 안전한 통신을 수행한다.
  • SSL/TLS는 암호 스위트를 변경해서강력한 알고리즘을 사용할 수 있다.

SSL/TLS상의 HTTP

  • 통신내용을 암호화해주는 프로토콜로 SSL 혹은 TLS를 이용한다. 그리고 SSL/TLS상에 HTTP를 올린다.
  • 이것을 프로토콜 이중 구조라고 하고 이로 인해 HTTP의 통신은 암호화되어 도청을 방지할 수 있고, 통신을 수행할 때 URL은 https:// 로 시작한다

암호 스위트(cipher suite)

  • SSL/TLS에서 사용하는 대칭키 암호, 공개키 암호, 전자서명, 일방향 해시함수 등 사용하고 있던 암호 기술에 결함이 발견되면 부품과 같이 교환할 수 있다.
  • 하지만 클라이언트와 서버가 같은 암호 기술을 사용해야 한다.

class EmailCheckView(View):
    def post(self, request):
        try:
            data = json.loads(request.body)
            email = data.get('email', None)
            auth_number = random.randint(10000, 100000)

            if email:
                validate_email(email)
                                   
            if Member.objects.filter(email = email).exists():
                return JsonResponse({'message': 'EXISTS_USER'}, status=409) 
           

            mail_subject = "[SOT] 회원가입 인증 메일입니다."
            content = f"이메일 인증에 성공하셨습니다.\n\n인증번호는 {auth_number}"
            user_email = data['email']
            email = EmailMessage(mail_subject, content, to=[user_email])
            email.send()

            return JsonResponse({'message': 'SUCCESS'}, status=201)         
        except KeyError:
            return JsonResponse({'message': 'KEY_ERROR'}, status=400)   

참고 https://ssungkang.tistory.com/entry/Django-%E1%84%92%E1%85%AC%E1%84%8B%E1%85%AF%E1%86%AB%E1%84%80%E1%85%A1%E1%84%8B%E1%85%B5%E1%86%B8-%E1%84%89%E1%85%B5-%E1%84%8B%E1%85%B5%E1%84%86%E1%85%A6%E1%84%8B%E1%85%B5%E1%86%AF-%E1%84%8B%E1%85%B5%E1%86%AB%E1%84%8C%E1%85%B3%E1%86%BC-SMTP

profile
미래 개발자

0개의 댓글