Settings.py 해석해보기

sihwan_e·2020년 5월 12일
0

Django

목록 보기
6/21

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',

미드웨어는 운영 체제와 응용 소프트웨어의 중간에서 조정과 중개의 역할을 수행하는 소프트웨어이다.
양 쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어, 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 어떤 서비스를 사용할 수 있도록 연결해주는 소프트웨어를 말한다.
3계층 클라이언트/서버구조에서 미들웨어가 존재한다.
응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용 할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어이다. 유연하고 확장, 축소가 편리하여야 하며 이러한 장점을 충족하기에 개발자의 다른 기종간 플랫폼을 다시 구축할 필요가 없어야 한다.
예를들면 데이터베이스 시스템, 전자통신 소프트웨어, 메시지 및 쿼리 처리 소프트웨어를 들 수있다.

위의 목록은 모든 요청에 대해 순서대로 모두 실행되는 함수들이다.
참고( 장고의 템플릿 시스템에서 도트(.)는 장고가 다음순서로 찾기를 시도한다. 예를들어, foo.bar라는 템플릿 변수가 있다면 다음과 같이 해석한다
1.foo가 사전타입인지를 확인한다. 그렇다면 foo[‘bar’]로 해석한다.
 2.그 다음은 foo 속성을 찾는다 . bar라는 속성이 있으면 foo.bar로 해석한다.
3.그것도 아니면 foo가 리스트인지를 확인한다. 그렇다면 foo[bar]로 해석한다.

템플릿 시스템은 변수의 속성에 접근하기 위해 점-탐색(dot-lookup) 문법을 사용합니다. 예제의 {{ question.question_text }} 구문을 보면, Django는 먼저 question 객체에 대해 사전형으로 탐색합니다. 탐색에 실패하게 되면 속성값으로 탐색합니다. (이 예에서는 속성값에서 탐색이 완료됩니다만) 만약 속성 탐색에도 실패한다면 리스트의 인덱스 탐색을 시도하게 됩니다.

클릭재킹

웹 사용자가 자신이 클릭하고 있다고 인지하는 것과 다른 어떤 것을 클릭하게 속이는 악의적인 기법으로써 잠재적으로 공격자는 비밀 정보를 유출시키거나 그들의 컴퓨터에 대한 제어를 획득할 수 있게 된다. 클릭재킹은 사용자의 인식없이 실행될 수 있는 임베디드 코드나 스크립트의 형태를 갖는다.
클릭재킹은 보기에 위험하지 않는 특징을 갖는 HTML 웹페이지들이 예상되지 않는 행동을 수행할 수 있음로써 가능해 진다.
클릭재킹 페이지는 감춰진 링크를 사용자가 클릭함으로써 의도되지 않는 행동을 수행하게 속인다. 사용자는 실제로는 감춰진 페이지에서 행동을 수행하지만 자신은 보이는 버튼을 클릭했다고 생각한다. 감춰진 페이지는 인증 페이지일 수 있으며, 공격자는 사용자가 전혀 의도하지 않은 행동을 수행할 수 있다. 사용자가 성실하게 숨겨진 페이지에서 인증을 수행한 경우, 이후 이 행동을 공격자까지 추적하는 방법은 없다.

x-frame-options

클릭재킹과 같은 공격을 다른 웹 브라우저가 일부 해결해줄수 있는 방안.
이 헤더의 값은 다음과 같은 값을 가지는데
“DENY”. >> 이 홈페이지는 다른 홈페이지를 표시할수 없음.
“SAMEORIGN” >> 이 홈페이지는 동일한 도메인의 페이지 내에서만 표시 할 수 있음.
“ALLOW-FROM origin” >>이 홈페이지는 origin 도메인의 페이지에서 포함하는 것을 허용함.

'django.middleware.csrf.CsrfViewMiddleware',

csrf 공격에 대한 토큰을 부여하는것임.

WSGI (Web Server Gateway Interface)

기본적으로 WSGI는 파이썬에 종속된 개념이다.
파이썬에서 어플리케이션, 즉 파이썬 스크립트(웹 어플리케이션)가 웹 서버와 통신하기 위한 인터페이스이다.
프로토콜 개념으로 이해 할 수도 있다. WSGI는 서버와 앱 양단으로 나뉘어져 있다.
WSGI 리퀘스트를 처리하려면 서버에서 환경정보와 콜백함수를 앱에 제공해야한다. 앱은 그요청을 처리하고 콜백함수를 통해 서버에 응답한다.

방식
요청>>웹서버>>WSGI Server(middleware라고도 함) >> WSGI를 지원하는 웹 어플리케이션(Django, flask 등)

WSGI Server( middleware)

웹 서버와 WSGI를 지원하는 웹어플리케이션 사이에서 동장하며, 아래와 같은 일을 한다.
1.환경변수가 바뀌면 타겟 URL에 따라서 리퀘스트의 경로를 지정해준다
2.같은 프로세스에서 여러 애플리케이션과 프레임워크가 실행된다
3.XSLT 스타일시트를 적용하는것과 같이 전처리함.

STATIC

Django은 정적 파일을 크게 두 종류로 구분합니다.

Static file은 Javascript, CSS, Image 파일처럼 웹 서비스에서 사용하려고 미리 준비해 놓은 정적 파일입니다. 파일 자체가 고정되어 있고, 서비스 중에도 수시로 추가되거나 변경되지 않고 고정되어 있습니다.

Media file은 이용자가 웹에서 올리는(upload) 파일입니다. 파일 자체는 고정되어 이지만, 언제 어떤 파일이 정적 파일로 제공되고 준비되는지 예측할 수 없습니다.

Static file은 서비스에 필요한 정적 파일을 미리 준비해놓기 때문에 manage.py 도구에 findstatic과 collectstatic이라는 기능으로 정적 파일을 모으고 찾는 관리 기능을 제공합니다. manage.py은 Django 프로젝트를 관리하는 일에 필요한 기능을 명령줄 쉘(shell)에서 수행하는 도구입니다.

profile
Sometimes you gotta run before you can walk.

0개의 댓글