본문 바로가기
ERROR

암호화 데이터 이중 암호화 문제

by 코드뭉치 2023. 7. 2.

기존 배송정보를 사용하거나,
새로운 배송정보를 입력받아서 저장하는 중 발생한 문제

def create(self, request, *args, **kwargs):
    # 기존 배송정보 사용 시
    if delivery_id := self.request.data.get("delivery_id"):
        deli = get_object_or_404(Delivery, pk=delivery_id)
        data = {
            "user": request.user,
            "address": deli.address,
            "detail_address": deli.detail_address,
            "recipient": deli.recipient,
            "postal_code": deli.postal_code,
        }
        serializer = self.get_serializer(data=data)
    # 새로운 배송정보 입력 시
    elif request.data.get("postal_code") and request.data.get("recipient"):
        data = request.data
        serializer = self.get_serializer(data=data, context={"user": request.user})
    serializer.is_valid(raise_exception=True)
    self.perform_create(serializer)
    headers = self.get_success_headers(serializer.data)

    return Response(
        serializer.data, status=status.HTTP_201_CREATED, headers=headers
    )


해당 메소드로 데이터를 저장한 뒤, GET요청 시 복호화 과정을 거친 후에도 암호화된 데이터가 나오고 있었음.

새로운 배송정보를 받아와서 암호화 하던 과정에서,

기존 배송정보를 사용 시, 암호화된 배송정보를 다시 암호화해서 저장하면서 암호화를 이중으로 하고 있었음.


serializer = self.get_serializer(data=data, context={"skip_validation": True})
def encrypt_deliveries_information(self, deliveries, validated_data):
    """
    오브 젝트 암호화
    """
    # 기존 배송정보 사용 시 암호화 PASS
    if self.context.get("skip_validation") is True:
        return deliveries
    encrypt_result = AESAlgorithm.encrypt_all(**validated_data)
    deliveries.address = encrypt_result.get("address")
    deliveries.detail_address = encrypt_result.get("detail_address")
    deliveries.recipient = encrypt_result.get("recipient")
    deliveries.postal_code = encrypt_result.get("postal_code")
    deliveries.save()
    return deliveries


암호화 과정에서 스킵 과정을 추가해서 해결

 

 

 

댓글