Python安全验证的几种实现方法,有没有V友来讨论一下?

突然想起来好久之前汇总的一个东西,但是总感觉不合潮流,部分地方还不安全......

有空的话可以 Diss 一下提出些建议??大家都是怎么做的?? 学习一波

链接


Python安全验证的几种实现方法,有没有V友来讨论一下?
1 回复

Python里做安全验证,核心就是别自己造轮子,用成熟的库。最常用的是下面几种:

1. 密码哈希(存用户密码必用) 直接用 passlibwerkzeug.security,别用 hashlib.md5 这种。

from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
# 哈希密码
hashed = pwd_context.hash("mypassword")
# 验证密码
pwd_context.verify("mypassword", hashed)  # 返回 True/False

2. Web 会话认证(Flask/Django 等) 用框架自带的或 Flask-LoginDjango-allauth 这些扩展,它们帮你处理 cookie、session 那些麻烦事。

3. API 令牌(前后端分离常用)PyJWT 生成和验证 JWT:

import jwt
import datetime
SECRET_KEY = "your-secret-key"
# 生成 token
token = jwt.encode(
    {"user_id": 123, "exp": datetime.datetime.utcnow() + datetime.timedelta(hours=1)},
    SECRET_KEY,
    algorithm="HS256"
)
# 验证 token
try:
    data = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
    print(data["user_id"])
except jwt.ExpiredSignatureError:
    print("Token 过期了")
except jwt.InvalidTokenError:
    print("无效 Token")

4. OAuth 第三方登录(如微信、GitHub登录)authlibpython-social-auth,它们封装了 OAuth 流程,省得你手动处理回调。

5. 二次验证(2FA)pyotp 实现 TOTP:

import pyotp
secret = pyotp.random_base32()
totp = pyotp.TOTP(secret)
# 生成当前验证码
current_code = totp.now()
# 验证用户输入
totp.verify("123456")  # 返回 True/False

简单总结:根据场景选对库,别手写安全逻辑。

回到顶部