본문 바로가기
Django

등록된 아이피만 사이트에 접속허용 - whitelist

by zgabriel 2024. 10. 15.
728x90

Django에서 특정 IP 주소만 사이트에 접근할 수 있도록 제어하려면 MIDDLEWARE에서 요청을 검사하고, 특정 IP 주소만 허용하거나 차단하는 방법을 사용할 수 있습니다. 이를 위해 사용자 정의 미들웨어를 작성할 수 있습니다.

 

1. 미들웨어 생성: 프로젝트의 앱 내에 미들웨어 파일을 생성합니다. 예를 들어, middleware.py 파일을 만듭니다.

 

2. 미들웨어 코드 작성: 특정 IP만 허용하는 로직을 미들웨어에 작성합니다. 예시 코드는 다음과 같습니다.

 

from django.http import HttpResponseForbidden

ALLOWED_IPS = ['127.0.0.1', '192.168.0.1']  # 허용할 IP 주소 목록

class IPRestrictionMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        ip = request.META.get('REMOTE_ADDR')
        if ip not in ALLOWED_IPS:
            return HttpResponseForbidden("Access Denied")
        
        response = self.get_response(request)
        return response

 

3. 미들웨어 등록: settings.py 파일에서 이 미들웨어를 등록합니다.

 

MIDDLEWARE = [
    # 다른 미들웨어들
    'your_app_name.middleware.IPRestrictionMiddleware',  # 방금 작성한 미들웨어 경로
    # 다른 미들웨어들
]

 

4. ALLOWED_IPS 설정: 필요한 IP들을 ALLOWED_IPS 목록에 추가합니다.

 

 

반응형