我想加密我的DRF项目API响应,是否有一种方法来加密大型响应,以便我只能访问前端的数据?我想加密所有的回应。
发布于 2022-04-24 21:11:45
是的,这是可能的,而且是我自己用过的。您可以使用直接应用于序列化程序的AES256 (高级加密标准256)来完成。
基本上,加密将依赖django的秘密密钥来加密和解密。
因此,有两个函数-- encrypt()和decrypt() --您将申请将它们加密到数据库中所需的每个字段。以及当端点命中GET请求时解密。
You can get these function example and implementation here.
示例:
from rest_framework import serializers
from django.conf import settings
from aesencryption import AESCipher
aes = AESCipher(settings.SECRET_KEY[:16], 32)
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ['name', 'address']
def create(self, validated_data):
# Here the data will be inserted into the db encrypted.
validated_data['name'] = aes.encrypt(validated_data['name'])
validated_data['address'] = aes.encrypt(validated_data['address'])
return MyModel.objects.create(**validated_data)
def to_representation(self, instance):
# Here you will decrypt the data from the db.
return {
'name': aes.decrypt(instance.name),
'address': aes.decrypt(instance.address)
}警告:更改secrete_key时要小心。如果你失去了它,你就无法得到数据。
https://stackoverflow.com/questions/71990865
复制相似问题