自定义存储后端:基于文件系统的透明加密与权限控制
扩展Django的Storage API,实现一个自动在写入时AES加密、读取时解密的自定义文件系统后端,并集成Django的权限系统进行文件级别的访问控制,确保存储介质泄露时数据安全。 · 难度:入门 · +10XP
自定义存储后端:透明加密与权限控制
继承django.core.files.storage.FileSystemStorage,重写_save和_open方法。使用cryptography库对文件内容进行加密,密钥从Django SECRET_KEY派生。同时添加权限检查:在url方法中生成临时授权token,通过中间件验证。最终实现一个符合Django文件API的加密存储后端。
from django.core.files.storage import FileSystemStorage
from cryptography.fernet import Fernet
import base64, hashlib
class EncryptedStorage(FileSystemStorage):
def _save(self, name, content):
cipher = Fernet(base64.urlsafe_b64encode(hashlib.sha256(settings.SECRET_KEY.encode()).digest()))
encrypted = cipher.encrypt(content.read())
return super()._save(name, ContentFile(encrypted))