我正在使用Python Flask框架开发一个网站,现在我做了一些开发工作,将所做的更改推送到了远程开发服务器上。我设置了此远程开发服务器以使用公开服务网站app.run(host='0.0.0.0')
。
这可以正常工作,但是我只是不希望其他人查看我的网站。由于这个原因,我以某种方式想将我的IP列入白名单,以便开发服务器仅将网站服务到我自己的IP地址,没有响应,404或其他无用的响应给其他IP地址。我当然可以将服务器设置为使用apache或nginx实际为网站提供服务,但是我喜欢在代码更改时自动重新加载网站以开发我的网站
那么,有人知道使用内置的Flask开发服务器来执行此操作的方法吗?欢迎所有提示!
仅使用Flask的功能,您可以使用before_request()
钩子测试request.remote_addr
属性:
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
列表以访问实际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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句