장뽀장뽀! 보안/연동문제 뽀개기!

ensia96·2020년 5월 4일
0
post-thumbnail

슈퍼개발자, 춤추는망고입니다.

( 춤 안춥니다. )





이번 시리즈는...

백엔드로 가는길,

장뽀장뽀! 장고 뽀개기!


입니다.
( 우와아아아앙아ㅏㅏㅏㅏ~!!!! )












1. 보안키 감춰두기!






프로젝트를 생성하셨다면,

프로젝트 폴더 안에,

' 같은 이름의 폴더 ' 가 하나 더 있다는 것을 눈치 채셨을거에요!


아직 확인해보시지 않으셨다면,

터미널에서 프로젝트 폴더 위치로 이동해주시고,
'tree' 명령어를 입력해보세요!

mango_project
   ├── manage.py
   └── mango_project
       ├── __init__.py
       ├── asgi.py
       ├── settings.py
       ├── urls.py
       └── wsgi.py

처럼 보이실거에요!
( ' mango_project ' 대신 ' 여러분이 생성한 프로젝트 이름 ' 이 보이겠죠? )


이런 상황인거죠 ㅎ

프로젝트 관리 폴더에서

mango_project 라는 프로젝트를 시작해서,

mango_project 라는 폴더가 생겼는데,

그 안에 들어갔더니, 이게 웬걸!

mango_project 라는 폴더가 또 있자너!?



삐빅! 정상입니다~

Project 에 대한 ' 전반적인 설정 ' 을 관리하는 폴더에요~

( 걱정마세욥! ㅎ )





그 폴더 안에는

' settings.py ' 라는

설정설정한 느낌이 드는 파일

이 하나 있을텐데요.

( 열어보시면 그냥? 영어가 엄~청납니다;;; )





그 파일을 여신 뒤,

' SECRET_KEY '

라는 내용을 찾아주세요.

( 옆에 엄청난 뭐시기가 있을겁니다. )




그게 우리 프로젝트의 ' 보안키 ' 에요!

( 절대절대 네버에버 뽀에버 다른사람이 알아선 안되요! )





보안키가 어떤건지 확인도 했겠다...

이제 감춰볼까요!




보안키 빼돌리기!

( 컥쓰! 첩보영화같자너! 멋잇자너! )

1. 프로젝트에서 ' manage.py ' 라는 이름의 파일이 있는 폴더에

2. ' my_settings.py ' 라는 파일을 만드세요!

3. 그 파일을 열어서 아래와 같이 적어주세요!

( 복붙해도 되요 ㅋ 개꿀띠~ )

my_settings.py

SECRET={
    'secret' : ' ( 우리 프로젝트의 보안키 ) '
	  	# 장고 프로젝트의 settings.py 파일에 있는 암호화 키에요!
}

4. ( 우리 프로젝트의 보안키 ) 부분에 위에서 찾아낸 보안키 내용을 넣어주세요!

5. ' my_settings.py ' 파일을 저장해주세요!



원래 자리에 보안키 짝퉁 놓기

( 뭐야 이거, 도둑질도 아니고; )

1. 우리가 보안키를 찾아낸 ' settings.py ' 를 다시 열어주세요!

2. 아래와 같이 적힌부분을 찾아주세요!

import os

3. ' 2 ' 에서 찾은 부분을 아래와 같이 바꿔주세요!

import os
import my_settings

4. 아까 보안키가 있던 위치에서 보안키 내용을 지워주세요!

( ' my_settings.py ' 파일로 옮기신 뒤에 지우세요! )

5. 지운 부분을 아래와 같이 보이게 바꿔주세요!

SECRET_KEY = my_settings.SECRET['secret']

( 사실은 진짜 보안키 내용만 직접적으로 안보이게 하는거랍니다! )

보안키 감추기 끝!





2. 연동문제 예방하기!






연동문제를 해결하기 위해

CORS-Headers 를 사용할거에요!


Cors-Headers 를 사용하기 위한 설정 추가하기!

' settings.py ' 파일을 열어주세요!

1. ' INSTALLED_APPS ' 라고 적힌부분을 찾아주세요!

( 아래 모양처럼 생겼을거에요! )

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

2. 위에서 찾은 부분의 맨 밑에 ' corsheaders ' 라고 적어주세요!

( 아래 모양처럼 보일거에요! )

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

1. ' MIDDLEWARE ' 라고 적힌부분을 찾아주세요!

( 아래 모양처럼 생겼을거에요! )

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

2. 위에서 찾은 부분을 아래 내용으로 바꿔주세요!

( 오타내지말고 제발 복붙하세요! )

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'corsheaders.middleware.CorsMiddleware', # 여기 바뀌었어요!
    'django.middleware.common.CommonMiddleware', # 여기 바뀌었어요!
]

거의 다 왔습니다!


1. 이번엔 파일의 맨 밑 부분으로 가주세요!

2. 아래 내용을 복붙해주세요!

cors-headers 설정값이에요~

CORS_ORIGIN_ALLOW_ALL=True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)
CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

이제 ' settings.py ' 파일을 저장해주세요!

연동문제 예방 끝!










여기까지!




이번 글에서는,

장고프로젝트를 진행하는 중에 생길 수 있는

' 보안과 연동에 관한 문제 ' 를 예방할 기초 세팅을 했습니다!




다음 글에서는,

장고와 관련된 개념에 대해 공부해볼겁니다!










백엔드 개발자가 다루는

많은 프레임워크 중 하나

장고를 함께 뽀개봅시다!





고생하셨습니다.

감사합니다.( _ _)

profile
지금까지 이런 망고는 없었다. 이것은 슈퍼개발자인가 춤추는망고인가

0개의 댓글