我正在使用 Python 开发网站 Flask framework我现在做一些开发,将我的更改推送到远程开发服务器。我将此远程开发服务器设置为使用 app.run(host='0.0.0.0')
公开为网站提供服务。
这工作正常,但我只是不想让其他人查看我的网站。出于这个原因,我想以某种方式将我的 ip 列入白名单,以便开发服务器仅将网站提供给我自己的 ip 地址,不提供任何响应、404 或其他对其他 ip 地址的无用响应。我当然可以将服务器设置为使用 apache 或 nginx 来实际为网站提供服务,但我喜欢在代码更改时自动重新加载网站以开发我的网站
那么有人知道使用内置的 Flask 开发服务器来做到这一点的方法吗?欢迎所有提示!
最佳答案
仅使用 Flask 的功能,您可以使用 before_request()
hook测试 request.remote_addr
attribute :
from flask import abort, request
@app.before_request
def limit_remote_addr():
if request.remote_addr != '10.20.30.40':
abort(403) # Forbidden
但在服务器上使用防火墙规则可能是更安全、更可靠的选择。
请注意,如果浏览器和您的服务器之间存在反向代理,则可以屏蔽 Remote_Addr;小心你如何限制这一点,不要把自己锁在外面。如果代理靠近服务器本身(如负载平衡器或前端缓存),您可以检查 request.access_route
list访问实际的IP地址。 仅当 remote_addr
本身也是受信任的 IP 地址时才执行此操作:
trusted_proxies = ('42.42.42.42', '82.42.82.42', '127.0.0.1')
def limit_remote_addr():
remote = request.remote_addr
route = list(request.access_route)
while remote in trusted_proxies:
remote = route.pop()
if remote != '10.20.30.40':
abort(403) # Forbidden
关于python - 如何限制单个IP地址访问Flask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22251038/