[python] 웹 서버에 접속 제한 기능 추가하기

이번에는 Python으로 작성된 웹 서버에 접속을 제한하는 기능을 추가하는 방법에 대해 알아보겠습니다.

목차

필요한 모듈 설치하기

웹 서버에 접속 제한 기능을 추가하기 위해 우선 flask 모듈을 설치해야 합니다. 아래의 명령을 사용하여 설치할 수 있습니다.

pip install flask

IP 주소 제한 기능 추가하기

Python Flask를 사용하여 웹 서버를 구축할 때, 특정 IP 주소에서만 접속할 수 있도록 제한할 수 있습니다. 다음의 코드 예시를 참고하여 구현해보세요.

from flask import Flask, request

app = Flask(__name__)

@app.before_request
def check_ip():
    allowed_ips = ['127.0.0.1']  # 허용할 IP 주소 목록
    
    if request.remote_addr not in allowed_ips:
        return 'Unauthorized', 401

@app.route('/')
def index():
    return 'Welcome to the restricted web server!'

if __name__ == '__main__':
    app.run()

위 코드에서 allowed_ips 리스트에 접속을 허용할 IP 주소를 추가하면 됩니다. 허용되지 않은 IP 주소에서 접속 시, 해당 클라이언트는 “Unauthorized” 메시지와 함께 401 오류를 받게 됩니다.

User-Agent 제한 기능 추가하기

User-Agent는 웹 브라우저나 다른 HTTP 클라이언트가 서버로 보내는 요청 헤더 값입니다. 이를 활용하여 특정 User-Agent에서의 접속을 제한할 수 있습니다. 다음의 코드 예시를 참고하여 구현해보세요.

from flask import Flask, request

app = Flask(__name__)

@app.before_request
def check_user_agent():
    denied_user_agents = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3']
    
    user_agent = request.headers.get('User-Agent')
    
    if user_agent in denied_user_agents:
        return 'Unauthorized', 401

@app.route('/')
def index():
    return 'Welcome to the restricted web server!'

if __name__ == '__main__':
    app.run()

denied_user_agents 리스트에 접속을 제한할 User-Agent 값을 추가하면 됩니다. 해당 User-Agent에서의 접속 시, 클라이언트는 “Unauthorized” 메시지와 함께 401 오류를 받게 됩니다.

참고 자료