ERROR
암호화 데이터 이중 암호화 문제
코드뭉치
2023. 7. 2. 07:34
기존 배송정보를 사용하거나,
새로운 배송정보를 입력받아서 저장하는 중 발생한 문제
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
암호화 과정에서 스킵 과정을 추가해서 해결