python - 如何禁止对烧瓶应用程序中的 POST 端点的非浏览器请求(用户代理)?
问题描述
我正在加载登录表单以进行用户验证。我想知道是否可以将flask
应用程序中的端点限制为仅响应我之前为其加载表单的浏览器请求。
我认为 CSRF 令牌可能是一种选择,但我想知道是否有更好的方法来做到这一点。
我希望能够禁止 Postman、curl 和其他用户代理向特定端点发送请求,除非它来自具有 UI 登录表单的浏览器。
解决方案
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'}
但是,请记住,将用户代理更改为您想要的任何内容都是一项简单的任务。因此,我不会太看重你得到的东西。
推荐阅读
- javascript - 如何在 react-leaflet v.3.x 中使用 dbclick 显示点列表?
- sitefinity - 网格小部件根据模型删除
- java - Swing BorderLayout:按钮之间没有空间,没有中心间隙
- spring-boot - 使用 Spring Boot mongotemplate 更新 2 级嵌套数组元素的问题
- opengl - 如何在可执行文件和 DLL 之间使用 OpenGL 函数指针?
- c# - 如何获取 GettyImages API-KEY?
- python - python调用cgo库——32位和64位问题
- flutter - 如何仅在 Flutter 中保持应用处于纵向模式?
- python - 除了 ValueError:怪癖
- xamarin - Xamarin Android - 启动屏幕图像适合