首页 > 解决方案 > 如何禁止对烧瓶应用程序中的 POST 端点的非浏览器请求(用户代理)?

问题描述

我正在加载登录表单以进行用户验证。我想知道是否可以将flask应用程序中的端点限制为仅响应我之前为其加载表单的浏览器请求。

我认为 CSRF 令牌可能是一种选择,但我想知道是否有更好的方法来做到这一点。

我希望能够禁止 P​​ostman、curl 和其他用户代理向特定端点发送请求,除非它来自具有 UI 登录表单的浏览器。

标签: pythonsecurityflaskconnexion

解决方案


request.user_agent您可以从属性确定用户代理。例如,在我使用 Chrome 浏览器访问 Flask 应用程序后,它具有以下值:

{'browser': 'chrome',
 'language': None,
 'platform': 'linux',
 'string': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like '
           'Gecko) Chrome/71.0.3578.80 Safari/537.36',
 'version': '71.0.3578.80'}

但是,请记住,将用户代理更改为您想要的任何内容都是一项简单的任务。因此,我不会太看重你得到的东西。


推荐阅读