首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DRF中加密响应?

如何在DRF中加密响应?
EN

Stack Overflow用户
提问于 2022-04-24 17:44:13
回答 1查看 858关注 0票数 2

我想加密我的DRF项目API响应,是否有一种方法来加密大型响应,以便我只能访问前端的数据?我想加密所有的回应。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-24 21:11:45

是的,这是可能的,而且是我自己用过的。您可以使用直接应用于序列化程序的AES256 (高级加密标准256)来完成。

基本上,加密将依赖django的秘密密钥来加密和解密。

因此,有两个函数-- encrypt()decrypt() --您将申请将它们加密到数据库中所需的每个字段。以及当端点命中GET请求时解密。

You can get these function example and implementation here.

示例:

代码语言:javascript
复制
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时要小心。如果你失去了它,你就无法得到数据。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71990865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档