Django GitHub 템플릿

머리말



Django로 작업할 때 개발자는 Django가 본질적으로 안전하다는 것을 확신할 수 있습니다. 이것은 Django 첫 페이지에서도 볼 수 있습니다.



이는 일반적인 OWAPS 상위 10개 인기 취약점에 대해 이미 우리를 처리했음을 의미합니다.

그러나 앞으로는 악의적인 해커가 우리 웹 사이트를 손상시킬 수 있는 가능성을 줄이기 위해 Django를 훨씬 더 안전하고 강력하게 만들기 위해 Django로 개선할 수 있는 사항이 있습니다.

이 게시물 시리즈는 사용성과 고객 데이터 보안 사이의 균형을 유지하면서 Django를 훨씬 더 안전하게 만드는 방법을 살펴볼 것입니다.

이 설정이 대부분의 Django 설정의 서문이어야 하므로 나중에 모든 Django 프로젝트 생성에 사용할 수 있는 GitHub 템플릿을 만들고 싶습니다.

장고 보안



내가 보기에 Django 애플리케이션의 보안을 향상시킬 수 있는 3가지 영역이 있습니다.

  • Django 설정/구성


  • Django 환경 변수 - python-decouple




  • Django 암호 해시 - Argon2





  • Django 사용자 인증/권한 부여


  • Django 비밀번호 확인 - django-password-validators




  • 암호 강도 검사 - django-zxcvbn-password





  • Django 사용자 세션


  • 세션 제한 - django-restricted-sessions



  • 동시 로그인 방지 - django-preventconcurrentlogins



  • 사용자 제어 Django 세션 - django-user-session




  • Ratelimit - django-ratelimit
  • 사용자 감사 - django-useraudit


  • 천천히 그러나 확실하게 시리즈를 위에서 언급한 각 라이브러리에 연결하겠습니다. 그러나 시리즈가 중단되면 나에게 문자를 보내거나 댓글을 공유하여 상기시켜주세요.

    앞으로 우리는 시작할 수 있는 좋은 기반이 필요하며 저에게는... 모든 프로젝트는 git repo로 시작해야 합니다. 따라야 할 좋은 만트라를 기억하세요.

    작은 커밋을 빠르게 커밋



    Github Git 레포



    새 프로젝트를 시작할 때 GitHub를 저장소로 사용합니다. 여러 장치에서 프로젝트를 계속할 수 있는 유연성이 있기 때문에 이 방법을 선호합니다.

    아래는 GitHub의 내 Git 저장소 설정입니다.



    아쉬라프졸코플리 / Django_Template


    Django 보안 시작 템플릿




    초기 Django 프로젝트 설정



    새 Django 프로젝트를 시작하는 단계별 방법을 공유하지는 않겠습니다. 그래서 나는 그 과정을 훑어볼 것이다.

    이제 내 폴더에서 Backend라는 파일 이름을 만듭니다. 이렇게 하면 이 작업을 진행하는 모든 프로젝트에서 공통 디렉토리를 가질 수 있습니다.

    이 백엔드 폴더에서 코드를 사용하여 가상 환경으로 시작합니다.

    pipenv shell
    


    그런 다음 코드를 사용하여 Django 패키지를 설치하십시오.

    pipenv install django
    


    명령으로 Django 프로젝트를 시작하십시오.

    django-admin startproject Backend .
    


    이제 다음 명령으로 사용자 앱을 추가합니다.

    python manage.py startapp User
    


    이제 사용자 폴더에서 models.py를 열고 다음 명령을 추가하십시오.

    from django.db import models
    from django.contrib.auth.models import AbstractUser
    from django.utils.translation import gettext_lazy as _
    
    # Create your models here.
    
    
    class User(AbstractUser):
        pass
    


    그런 다음 admin.py와 다음 코드를 엽니다.

    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin
    from django.contrib.auth import get_user_model
    # Register your models here.
    
    User = get_user_model()
    
    
    @admin.register(User)
    class CustomUserAdmin(UserAdmin):
        pass
    
    


    이제 settings.py 파일에 있는 INSTALLED_APP에 사용자 앱을 추가합니다.

    INSTALLED_APP = [
        "User",
    # continue with all the default app.
    ]
    


    settings.py 어딘가에 다음을 추가하십시오.

    # Custom User Model
    AUTH_USER_MODEL = 'User.User'
    



    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/3.2/howto/static-files/
    
    STATIC_ROOT = BASE_DIR.joinpath('static')
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        BASE_DIR.joinpath("static_files"),
    ]
    



    # Public media files
    
    MEDIA_ROOT = BASE_DIR.joinpath('media')
    MEDIA_URL = '/media/'
    


    또한 setting.py에서 템플릿을 교체하십시오.

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                BASE_DIR.joinpath('templates'),
            ],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    


    여기에서 이미 git repo에 대한 커밋을 시작할 수 있습니다.



    코드를 리포지토리에 커밋했으므로 여기서 이 게시물을 끝내고 다음 기사를 위해 계속 지켜봐 주시기 바랍니다.

    좋은 웹페이지 즐겨찾기