Python安全验证的几种实现方法,有没有V友来讨论一下?
Python安全验证的几种实现方法,有没有V友来讨论一下?
1 回复
Python里做安全验证,核心就是别自己造轮子,用成熟的库。最常用的是下面几种:
1. 密码哈希(存用户密码必用)
直接用 passlib 或 werkzeug.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-Login、Django-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登录)
用 authlib 或 python-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
简单总结:根据场景选对库,别手写安全逻辑。

