未提供项目说明

fastapi-security-telegram-webhook的Python项目详细描述


fastapi安全电报webhook

用于FastAPI的插件,允许您保护您的Telegram Bot API webhook 具有IP限制和可选秘密令牌的终结点。在

Telegram提供了两种获取更新的方法:长轮询和webhook。当你使用webhook时,你只需注册 端点地址和电报将JSON发送到此地址。如果坏人发现了你的webhook地址,那么 他可以给你的机器人发送假“电报更新”。在

Telegram不提供任何安全特性,如签名或身份验证机制,因此保护webhook是一项任务 对于一个机器人开发者。在

因此,要保护您的webhook,您只有两个选择:

  • 只允许来自电报子网的请求。 Telegram assures他们不会改变。在
  • 在端点地址中使用机密值,例如/telegram-webhook/468e95826f224a60a4e9355ab76e0875。会的 使暴力攻击复杂化,如果值被破坏,您可以很容易地更改它。在

这个小插件允许你使用两种方式来保护。在

如何使用

使用pip或其他包管理工具:

pip install fastapi-security-telegram-webhook

或者

^{pr2}$

或者

pipenv install fastapi-security-telegram-webhook

包包含两个安全对象:

  • OnlyTelegramNetwork只允许来自电报子网的请求
  • ^{cd3>额外检查秘密路径

OnlyTelegramNetworkWithSecret为例。注意路径操作中的{secret},这是必需的

fromfastapiimportFastAPI,Body,Dependsfromfastapi_security_telegram_webhookimportOnlyTelegramNetworkWithSecretapp=FastAPI()webhook_security=OnlyTelegramNetworkWithSecret(real_secret="your-secret-from-config-or-env")# {secret} in path and OnlyTelegramNetworkWithSecret as dependency:@app.post('/webhook/{secret}',dependencies=[Depends(webhook_security)])defprocess_telegram_update(update_raw=Body(...)):...

在代理后使用

该插件使用starlette.Request.client.host来提取请求的IP地址,因此如果您的web应用程序 在代理之后,你应该将真正的IP传递给应用程序。在

对于uvicorn,您可以使用--proxy-headers,如中所述 documentation。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Dropwizard中的Minio检索文件时,GET请求中的超时是如何处理的?   带Hibernate的java Jackson用于序列化以避免枚举   Raspberry Pi上的java Jave分段错误   java在屏幕旋转时不保存当前片段和数据   java War文件未在Heroku上正确部署   如何使用Java处理Selenium webdriver中的促销广告或cookie   java处理“用法:PApplet[options]<classname>[sketch args]”   java文本文件错误扫描程序   运行第一个JavaFX模块化程序时出现java异常   java将fileoutputstream转换为字符串   如何调试gstreamerjava?   java Spring RestTemplate ResponseBody类是什么样的   如何将JSON数组转换为Java列表。我在用斯文森   javascript在显示div按钮后进入新页面