ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] setting.py 파헤치기 #1
    파이썬/Django 2021. 3. 3. 21:31

    Django의 settings.py를 이해하기 위해 처음부터 끝까지 낱낱이 파헤쳐본다!

     

    BASE_DIR

    from pathlib import Path
    
    BASE_ DIR = Path(__file__).resolve().parent.parent

    pathlib 모듈은 다른 운영 체제에 적합한 의미 체계를 가진 파일 시스템 경로를 나타내는 클래스를 제공한다. 코드가 실행되는 플랫폼의 구상 경로를 인스턴스화 하는 것이다.

    따라서, Path(__file__)은 현재 파일의 구상 경로를 인스턴스화 하고 resolve() 메서드를 통해 절대경로를 반환한다.

    그리고 부모 경로로 2번 옮겨가면 django 프로젝트가 생성된 위치가 BASE_DIR 변수로 인스턴스화 된 것

    from pathlib import Path
    
    print(Path(__file__))
    print(Path(__file__).resolve())
    print(Path(__file__).resolve().parent)
    print(Path(__file__).resolve().parent.parent)
    
    """
    /User/user1/Desktop/test.py라는 경로에서 위의 코드를 실행 시키면 결과값은
    
    test.py
    /Users/user1/Desktop/test.py
    /Users/user1/Desktop
    /Users/user1
    
    이된다.
    """

     

    SECRET_KEY

    SECRET_KEY = "@xo=xu_=*p4%6@qm1a2sbekjri0y#m#i!$03pfhk=7s=y3w@z-"

     SECRET_KEY는 특정한 장고 설치를 위한 키이다. 암호화 서명을 제공하는데 사용되기도 하고, 유니크한 값으로 설정된다.

    프로젝트를 생성할때 자동으로 SECRET_KEY가 생성된다. 키를 사용할 때 텍스트 또는 바이트라고 가정하면 안된다. 사용할 떈 꼭

    force_str() 또는 force_byte()해서 변환해야 한다. SECRET_KEY가 없으면 프로젝트는 실행되지 않는다.

    SECRET_KEY는 다음 경우에 사용된다.

    • django.contrib.sessions.backends.cache 이외에 다른 백엔드 세션을 사용하거나, default인 get_session_auth_hash() 메서드로 SHA-256 해싱할때의 모든 세션

    • CookieStorage나 FallbackStorage를 사용할 때의 모든 메세지

    • 다른 키가 제공되지 않았을 때 암호화 서명

    DEBUG

    DEBUG = True

    앱이 디버그 실행인지 아닌지 설정할때 사용

     

    ALLOWED_HOST

    ALLOWED_HOSTS = []

     이 앱이 제공할 수 있는 호스트/도메인 이름을 나타내는 리스트이다. Http host header attack을 방지하기 위한 조치이다.

    Http Host header attack (Cache poisoning)이란?

     하나의 ip 주소를 사용하는 웹-서버에 두개 이상의 웹 서비스 (www.abc.com, www.xyz.com)를 구현할 경우에, 가상 호스팅 기능을 사용하는데, 이때 Host header를 이용하여 각각의 도메인을 구분한다. 이떄 공격자가 Host header를 변조하면 피싱 사이트 접근, XSS 실행, 암호 재설정등 취약점이 발생한다.

     

    INSTALLED_APPS

    INSTALLED_APPS = [
        "django.contrib.admin",
        "django.contrib.auth",
        "django.contrib.contenttypes",
        "django.contrib.sessions",
        "django.contrib.messages",
        "django.contrib.staticfiles",
    ]

    기본적으로 설치되아있는 앱들

    • django.contrib.admin: 장고의 가장 큰 장점 중에 하나인 어드민 인터페이스

    • django.contrib.auth: 장고 인증 시스템

    • django.contrib.contenttypes: 프로젝트에 설치된 모든 모델을 추적할 수 있음 높은 수준의 모델 작업에 인터페이스를 제공

    • django.contrib.sessions: 익명 세션에 데이터를 저장하기 위한 프레임워크

    • django.contrib.messages: 웹페이지에 1회성 알림 메세지를 띄울 때 사용하는 프레임워크

    • django.contrib.staticfiles: 배포환경에서 쉽게 제공될 수 있게 각각의 앱의 정적 파일들을 한 곳에 모아주는 프레임워크

    댓글

Designed by Tistory.