Study/Django

    Django의 CSRF 방지 / CSRF / Cross-Site Request Forgery

    장고의 CSRF 방지 크로스 사이트 요청 위조(CSRF, Cross-Site Request Forgery)는 웹 사이트에서 유저가 서버로 요청을 보내는 행위를 악의적으로 변경 및 조작한 후 요청을 전송하는 것입니다. 즉 사용자가 요청하지 않은 것도 사용자가 요청한 것처럼 처리되는 것입니다. CSRF 위조의 단계 사용자가 보안이 취약한 사이트에 로그인 후 아이디와 패스워드 등 입력을 서버로 전송시킨다. [ Form 사용 ] 서버가 사용자가 전송한 정보를 보고 정상 유저임을 인증 [ 로그인 성공 ] 이때, 서버로 부터 인증된 사용자라는 정보가 사용자에게도 전달된다. 이 상태에서 사용자가 로그아웃을 하지 않은 채, 악성 사이트로 이동하게 됩니다. 악성 사이트에서 사용자의 정보를 가져오거나, 돈을 송금하는 등의..

    Django traling slash / 장고 트레일링 슬래시

    Django의 Trailing Slash [ 트레일링 슬래시 ] URL 끝에 있는 슬래시를 트레일링 슬래시 (trailing slash)라고 한다. 도메인 끝에 붙은 슬래시는 그 유무에 따른 차이가 없습니다. ex) tistory.com or tistory.com/ 하지만 도메인이 아닌 url에 트레일링 슬래시가 붙을 경우 서로 다른 곳을 가리키는 주소가 됩니다! ex) index/test 와 index/test/ 는 서로 다른 곳! 이런 형태는 과거에는 이 슬래시가 '파일'과 '디렉토리'를 가리키고 있었기 때문입니다. 슬래시가 없는 주소는 '파일' , 슬래시가 붙은 주소는 '디렉터리'를 가리켰기 때문인데요. 현재에는 데이터를 데이터베이스에 저장하거나 가져오기 때문에 URL이 직접적으로 파일이나 디렉터리..

    Django Model Form / 장고 모델 폼 / forms.ModelForm

    Django Model Form Django의 ModelForm은 Django의 강력한 폼 기능 중 하나로 사용자가 작성한 모델을 기반으로 자동으로 폼을 생성해주는 기능입니다! 일일이 폼을 작성하는 것을 원래는 아래의 코드처럼 django Form 클래스를 이용해서 간편하게 처리했지만 ModelForm을 사용하면 더 쉽게 사용할 수 있습니다! def page_create(request): if request.method == 'POST': title = request.POST['title'] content = request.POST['content'] dt_created = request.POST['dt_created'] feeling = request.POST['feeling'] score = requ..

    Django model DateTimeField 한국 시간으로 설정하기

    문제 발생 class Post(models.Mode): dt_create = models.DateTimeField(auto_now_add=True) auto_now_add 옵션으로 인해 dt_create에는 자동적으로 글을 작성할 때 작성 시간이 저장되게 되는데 이 부분에서 django의 settings.py 에서 TIME_ZONE을 'Asia/Seoul' 로 바꿔도 한국 시간이 아닌 UTC로 저장이 되는 문제가 발생했다. LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Asia/Seoul' USE_I18N = True USE_L10N = True USE_TZ = True 해결 방법 간단하게 위 settings.py 파일에서 USE_TZ = True 를 USE_TZ = False 로 바..