Python+Flask设置ip白名单

一、背景

基于 Flask 开发了一些 API接口,接口的控制需要访问权限,防止外部用户随意调用。

二、方案

获取请求方ip,然后判断此 ip 是否在白名单列表里面,如果不在则拒绝请求,这个白名单信息最好是可以通过动态更新或者数据库来维护,不然每次新增都需要上线操作,比较麻烦,代码示例如下:

# -*- coding: utf-8 -*-
from flask import Flask, request
from logzero import logger

# 创建Flask的应用程序
app = Flask(__name__)

# ip白名单
ip_whitelist = ["10.13.12.136", "10.23.56.135"]

# 以装饰器形式绑定路由
@app.route('/')
def hello_world():
    # 获取请求来源ip
    ip = request.remote_addr
    logger.info("ip: {}".format(ip))

    if ip not in ip_whitelist:
        return 'ip is not in whitelist!'

    return 'Hello World!'

if __name__ == '__main__':
    # 启动flask程序
    app.run(host="0.0.0.0", debug=True, port=8765)

根据机器名字获取 ip 信息:

获取ip
import socket
host_ip = socket.gethostbyname

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rs勿忘初心

您的鼓励将是我的最大创动原动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值