Study/Web 25

Nginx ModSecurity 및 CRS 적용하기

ModSecurity 표준 오픈 소스 웹 애플리케이션 방화벽(WAF) 엔진 Apache HTTP Server용 모듈로 설계되었지만 다양한 플랫폼에서 HTTP 요청 및 응답 필터링 기능을 제공하도록 발전했다. 상세 설정 사항은 owasp modsecurity wiki를 참조하자. Reference Manual (v3.x) ModSecurity is an open source, cross platform web application firewall (WAF) engine for Apache, IIS and Nginx that is developed by Trustwave's SpiderLabs. It has a robust event-based programmin... github.com 간단한 환경 설정 ..

Study/Web 2024.03.01

[Web]Django 쿼리셋(QuerySet)

쿼리셋 QuerySet 전달받은 모델의 객체 목록 데이터베이스로부터 데이터를 읽고, 필터를 걸거나 정렬을 할 수 있다. Post 모델을 models.py파일에 post_list 모델은 views.py 파일에 HTML 템플릿에서 글 목록을 어떻게 보여줄까? post_list를 뷰에서 보여주고 이를 템플릿에 전달하기 위해서는 모델을 가져와야 함 뷰가 템플릿에서 모델을 선택하도록 만들어야 함 blog\views.py from django.shortcuts import render from django.utils import timezone from .models import Post def post_list(request): posts = Post.objects.filter(published_date__lte..

Study/Web 2023.07.04

[Web]Django urls.py 구성

URLConf URL Configuration 장고에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합 http://127.0.0.1:8000/ 주소를 블로그 홈 페이지로 지정하고 blog 애플리케이션에서 메인 mysite\urls.py 파일로 url들을 가져오자 blog.urls를 가져오기 위해 include 함수를 사용 mysite\urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('blog.urls')), ] include를 적용하기 전에는 URL을 요청하면 프로젝트(mysite)의 urls...

Study/Web 2023.07.04

[Web]Django 애플리케이션 생성 및 관리자 설정

애플리케이션 생성 python manage.py startapp blog blog라는 애플리케이션 생성 mysite\settings.py에 'blog'를 추가하여 해당 애플리케이션에 대한 내용을 등록 블로그 글 model 생성 from django.conf import settings from django.db import models from django.utils import timezone class Post(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) title = models.CharField(max_length=200) text = models.TextField() cre..

Study/Web 2023.07.03

[Web]Django 가상환경 구성 및 설치

가상환경 mkdir djangogirls cd djangogirls python -m venv myvenv myvenv\Scripts\activate 장고설치 python -m pip install --upgrade pip pip3 install django~=2.0.0 python3 -m pip install django 위 명령을 통해서도 설치 가능 장고를 설치하고 나면 django-admin 명령을 사용할 수 있으며 startproject를 통해 프로젝트를 실행할 수 있다. django-admin startproject mysite . mysite라는 프로젝트를 시작하며 .(현재 디렉토리)에서 생성 manage.py - 스크립트, 사이트 관리를 도와주는 역할 settings.py - 웹사이트 설정이..

Study/Web 2023.07.02

[Web]Django MTV 패턴

Django MVC(Model - View - Controller)를 기반으로 한 프레임워크 MVC가 아닌 MTV를 사용 MVC Model - View - Controller 각가의 구성 요소가 서로 다른 요소들에게 영향을 미치지 않아야 한다 Model 데이터를 가지고 있으며, 데이터를 처리하는 로직 View 화면에 요청에 대한 결과물을 보여주는 역할 유저와 어플리케이션 간의 인터페이스 Controller 모델과 뷰를 이어주는 역할 요청에 따라 모델에게 적절한 로직을 가동하도록 알려주고 모델이 응답하면 그 응답을 뷰에 전달하는 역할 MTV Model - Template - View Model 데이터베이스에 저장되는 데이터 하나의 클래스가 하나의 DB Table ORM(Object Relational Ma..

Study/Web 2023.07.02

[Web]Django 설치 및 설정(sqlite version error)

0. python3 install python3가 기본적으로 설치되어 있어야 한다. 설치되어 있지 않다면 다음 명령을 이용하여 설치해주자. yum -y install python3 1. django install 이제 django를 설치한다. python3 -m pip install django 2. project create django-admin startproject myproject . .(현재 디렉토리)에 myproject라는 프로젝트가 생성된다. 3. django 실행 [root@localhost ~]# python3 manage.py runserver Watching for file changes with StatReloader Performing system checks... System ..

Study/Web 2023.06.24

[Web]DNS rebinding

DNS rebinding 사용되는 도메인 이름 확인을 조작하는 방법 SOP(Same Origin Policy)를 우회하는 공격기법 악의적인 사이트의 도메인에 할당된 IP를 잠재적인 희생자가 사이트에 들어와 있는 동안 공격하고자 하는 사이트의 IP로 바꾸어 Same Origin Policy를 우회하는 방법 공격자의 DNS 서버에서 반환하는 IP 주소가 바뀔 수 있음에도 불구하고 브라우저가 same origin으로 판단하여 차단하지 않는 공격 브라우저가 그렇게 판단하는 이유는 scheme://domain:port 가 모두 동일하기 때문이다. SOP(Same Origin Policy) - 다른 출처 간 자원 접근 차단 정책 웹 보안 정책에서 Origin(출처)는 scheme, host, port 세 가지로 구..

Study/Web 2022.10.09

접근 통제 취약점

접근 통제 취약점 인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되어 있지 않을 때 접근 통제 취약점이 존재 취약한 접근 통제의 경우 URL이나 파라미터를 조작하여 다른 사용자의 리소스에 접근하거나 허용되지 않은 기능을 실행할 수 있는 경우 적절한 인증 및 인가 과정을 거치지 않고 관리자 페이지에 접근할 수 있는 경우 디렉터리 트래버셜 취약점과 같이 웹 디렉터리 경로를 벗어난 호스트 내부 경로의 리소스에 접근할 수 있는 경우 안전하지 않은 직접 객체 참조(IDOR 공격) 부적절한 이용자 인가 여부 불충분한 이용자 인가 "Insecure Direct Object Reference" 공격자가 요청 메시지의 URL이나 파라미터를 변경하여 정상적으로 허용되지 않은 기능을 실행하거나 다른 사용자의..

Study/Web 2021.06.15

SQL Injection

SQL Injection이란? 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터 베이스가 비정상적인 동작을 하도록 조작하는 행위 주로 입력값에 대한 검증이 없기 때문에 발생 Error based SQL Injection 가장 많이 쓰이고, 대중적인 공격 기법 대표적인 예시로 로그인을 처리하는 쿼리가 있다. 아래 쿼리를 보면 id와 password를 받아온다. 여기서 id로 admin'-- 을 입력하게 되면 주석 이하의 구문은 실행되지 않게 되어 password 값없이 로그인에 성공하게 된다. ' or 1=1 -- 도 많이 쓰인다. Union based SQL Injection 두 개의 쿼리문에 대한 결과를 통합해서 하나의 테이블로 보여주게 하는 키워드 이를 ..

Study/Web 2021.06.14