itsdangerous的简单使用

itsdangerous是一个Python库,用于安全地发送数据到不可信环境。通过签名和加密,确保数据不被篡改。支持HMAC和SHA1签名,以及JSONWeb签名。由Armin Ronacher编写,基于Django签名模块。

官方网站

https://itsdangerous.readthedocs.io/en/1.1.x/

首先介绍一下什么是itsdangerous:

  • 有时候你想向不可信的环境发送一些数据,但如何安全完成这个任务呢?解决的方法就是签名。使用只有你自己知道的密钥,来加密签名你的数据,并把加密后的数据发给别人。当你取回数据时,你就可以确保没人篡改过这份数据。
  • 诚然,接收者可以破译内容,来看看你的包裹里有什么,但他们没办法修改你的内容,除非他们也有你的密钥。所以只要你保管好你的密钥,并且密钥足够复杂,一切就OK了。
  • itsdangerous内部默认使用了HMAC和SHA1来签名,基于 Django 签名模块。它也支持JSON Web 签名 (JWS)。这个库采用BSD协议,由Armin Ronacher编写,而大部分设计与实现的版权归Simon Willison和其他的把这个库变为现实的Django爱好者们。
下面是它的安装指令
pip install itsdangerous
下面演示它的使用方法

-

  • 签名会被家在字符串的尾部,中间由句号(.)分隔;
  • 验证字符串,使用unsign()方法
    在这里插入图片描述
一个简单的应用
  • 超过设定的加密时间以后,再次打印就报错了
  • 这个包里面有TimedJSONWebSignatureSerializer这个方法,这个方法的名字太长了,所以,使用as 进行起个别名为Serializer,这个方法就是用来进行加密和解密的,还可以设置加密的过期时间。使用Serializer()创建对象,需要填写两个参数:第一个参数是加密的密钥,第二个参数是过期时间是5,单位是秒。
  • 解密后返回的为一个字典对象
    在这里插入图片描述
itsdangerous是一个Python库,用于生成和验证安全令牌、URL签名和其他安全相关功能。这个库可以帮助开发者在Web应用程序中实现一些关键的安全性功能,如登录会话管理、防止CSRF攻击等。下面是一个简单的例子来演示如何使用itsdangerous生成和验证安全令牌: ```python from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired # 创建一个签名密钥 secret_key = 'my_secret_key' # 创建一个序列化器 s = Serializer(secret_key, expires_in=3600) # 生成一个安全令牌 token = s.dumps({'user_id': 1234}).decode('utf-8') print('Token:', token) # 验证安全令牌 try: data = s.loads(token, max_age=3600) print('User ID:', data['user_id']) except SignatureExpired: print('Token has expired') except BadSignature: print('Token is invalid') ``` 在这个例子中,我们首先创建了一个签名密钥,并使用它创建了一个序列化器。然后,我们使用序列化器生成了一个安全令牌,并将其打印出来。最后,我们使用同样的序列化器验证了这个令牌,并从中提取了用户ID。 值得注意的是,我们在创建序列化器时设置了一个过期时间(expires_in),这意味着这个令牌将在3600秒后过期。当我们验证这个令牌时,我们还设置了一个最大年龄(max_age),以确保令牌未过期。 如果令牌未过期且签名正确,我们将从中提取数据并打印出来。否则,我们将捕获SignatureExpired或BadSignature异常,并相应地处理它们。 这只是itsdangerous的一个简单用法示例。在实际应用中,您可能会使用它来生成和验证重置密码链接、验证电子邮件地址、实现记住我功能等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值