0

0

PythonAPI接口安全开发教程_认证授权与加密实践解析

冷炫風刃

冷炫風刃

发布时间:2026-01-06 18:06:09

|

755人浏览过

|

来源于php中文网

原创

JWT比基础认证更安全,因其签名+可选加密实现状态无关、可验证、有时效的认证;需用PyJWT生成token,密钥存环境变量,payload精简且设exp/iat,每次校验签名、时效与Header格式,敏感操作加二次验证。

pythonapi接口安全开发教程_认证授权与加密实践解析

API认证:用JWT替代基础认证更安全

基础认证(Basic Auth)把用户名密码Base64编码后传在Header里,本质无加密,一旦被截获就等于泄露凭证。JWT(JSON Web Token)则通过签名+可选加密,实现状态无关、可验证、有时效的认证机制。

实践建议:

  • 使用red">PyJWT库生成token,密钥(SECRET_KEY)必须足够长且存于环境变量,绝不可硬编码
  • payload中只放必要字段(如user_idrole),避免敏感信息;设置exp(过期时间)和iat(签发时间)
  • 每次请求校验token签名有效性、是否过期、是否被篡改;拒绝没有Authorization: Bearer 头的请求
  • 敏感操作(如删账号、改密码)额外要求二次验证(如短信/邮箱确认),不单靠JWT

接口授权:按角色+资源粒度控制访问权限

认证通过只代表“你是谁”,授权决定“你能做什么”。简单用@admin_required装饰器不够,需结合角色(Role)、资源(Resource)、操作(Action)三要素动态判断。

推荐做法:

立即学习Python免费学习笔记(深入)”;

GentleAI
GentleAI

GentleAI是一个高效的AI工作平台,为普通人提供智能计算、简单易用的界面和专业技术支持。让人工智能服务每一个人。

下载
  • 在用户登录成功后,将权限列表(如["post:read", "post:write", "user:delete"])写入JWT的permissions字段,服务端解析后缓存,避免每次查DB
  • 定义统一的权限检查函数,例如has_permission(user_perms, resource='order', action='update'),内部匹配前缀或精确规则
  • 对高危资源(如/api/v1/users//reset-password)启用白名单机制,仅允许特定IP段或客户端证书访问
  • 定期审计权限分配,禁用离职人员token,并提供管理员一键回收某用户所有活跃token的能力

数据传输加密:HTTPS是底线,敏感字段再加一层保护

HTTPS解决传输层窃听与篡改,但无法防止服务端日志泄露、数据库被拖库等场景。对身份证号、手机号、银行卡等强敏感字段,需在应用层做额外加密。

实操要点:

  • 使用cryptography库的Fernet(对称加密)或RSA(非对称),避免自己实现加解密逻辑
  • 敏感字段入库前加密,查询后解密返回;注意加密后字段长度变化,数据库字段类型要预留足够空间(如VARCHAR(255)→TEXT)
  • 禁止在URL、Query参数、Cookie、日志中明文记录敏感数据;使用logging.Filter过滤含id_cardphone等关键字的日志行
  • 若调用第三方API需传敏感数据,优先使用其提供的令牌化(Tokenization)或字段级加密(FPE)方案,而非自行加密

防滥用与风控:限流+签名+行为审计缺一不可

开放API易成攻击入口,暴力遍历、重放攻击、爬虫刷量都可能绕过认证直接打垮服务。

关键防护措施:

  • slowapifastapi-limiter实现多级限流:全局QPS、用户级每分钟请求数、IP级并发连接数
  • 对关键接口(如登录、支付回调)启用请求签名:客户端用私钥对timestamp+body+path生成签名,服务端用公钥验签,并拒绝15秒外的请求
  • 记录完整访问日志(含IP、User-Agent、响应状态码、耗时、JWT中的user_id),用ELK或Prometheus+Grafana做异常检测(如单IP 5分钟内401错误超20次)
  • 对高频失败请求自动触发人机验证(如滑块),或临时加入延迟队列,避免自动化工具快速试探

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

406

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

531

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

308

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API

Python FastAPI 异步开发利用 async/await 关键字,通过定义异步视图函数、使用异步数据库库 (如 databases)、异步 HTTP 客户端 (如 httpx),并结合后台任务队列(如 Celery)和异步依赖项,实现高效的 I/O 密集型 API,显著提升吞吐量和响应速度,尤其适用于处理数据库查询、网络请求等耗时操作,无需阻塞主线程。

23

2025.12.22

resource是什么文件
resource是什么文件

Resource文件是一种特殊类型的文件,它通常用于存储应用程序或操作系统中的各种资源信息。它们在应用程序开发中起着关键作用,并在跨平台开发和国际化方面提供支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

145

2023.12.20

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6413

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2023.11.23

PPT动态图表制作教程大全
PPT动态图表制作教程大全

本专题整合了PPT动态图表制作相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.07

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号