Как упомянул @Klaus D., вы можете проверить, начинается ли удаленный адрес с части адреса.
Вы можете проверить, указан ли удаленный адрес в определенном списке IP-адресов в @before_request
декораторе.
Здесь я показываю пример белого списка IP-адресов в Python.
Использовал локальную сеть (подключенную через WiFi) для проверки.
Локальный IP-адрес для сервера Flask: 192.168.0.107
app.py
:
from flask import abort, Flask, render_template, request
ALLOWED_IPS = ['192.168.1.', '127.0.0.1']
app = Flask(__name__)
@app.errorhandler(403)
def permission_error(e):
return render_template('403.html', error_code=403), 403
@app.before_request
def limit_remote_addr():
client_ip = str(request.remote_addr)
valid = False
for ip in ALLOWED_IPS:
if client_ip.startswith(ip) or client_ip == ip:
valid = True
break
if not valid:
abort(403)
@app.route('/', methods = ['GET'])
def home():
return "Your IP: {}".format(request.remote_addr)
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
403.html
<h3>Your IP address is not white listed</h3>
Выход:
Доступ к приложению с IP-адреса, которого нет в списке ALLOWED_IPS
:
Доступ к приложению с IP-адреса из списка ALLOWED_IPS
:
После обновления списка ALLOWED_IPS
до ALLOWED_IPS = ['192.168.0.', '127.0.0.1']
я могу получить доступ к приложению Flask из 192.168.0.107
: