고유 정수 식별자로 Django의 기본 키 숨기기
Django에서 기본 키는 일반적으로 고유 키 역할을 하는 자동 증가 정수입니다. 테이블의 각 행에 대한 식별자입니다. 그러나 이 키를 URL이나 기타 공개 컨텍스트에 노출하면 개인 정보 보호 및 보안이 손상될 수 있습니다. 이 문서에서는 고유한 특성을 유지하면서 기본 키를 난독화하는 대체 접근 방식을 살펴봅니다.
요구 사항
접근 방식
이러한 요구 사항을 해결하기 위해 Instagram의 ID 생성 시스템과 유사한 솔루션이 제안되었습니다. 이 접근 방식에는 시간 기반 구성 요소와 임의 구성 요소로 구성된 고유 ID를 생성하는 작업이 포함됩니다.
ID 생성을 위한 함수
import time import random START_TIME = int(time.time() * 1000) # Some constant timestamp def make_id(): t = int(time.time() * 1000) - START_TIME u = random.SystemRandom().getrandbits(23) id = (t << 23) | u return id def reverse_id(id): t = id >> 23 return t + START_TIME
make_id 함수는 다음을 사용하여 고유 ID를 생성합니다. 41비트 시간 기반 구성 요소와 23비트 임의 구성 요소입니다. reverse_id 함수를 사용하면 생성된 ID에서 타임스탬프를 추출할 수 있습니다.
Model
from django.db import models class MyClass(models.Model): id = models.BigIntegerField(default=make_id, primary_key=True)
make_id 함수를 id 필드의 기본값으로 사용하면 새로운 삽입 시 레코드에 고유 ID가 할당됩니다. 이 접근 방식을 사용하면 기본 키 필드가 정수 데이터 유형을 유지하면서 순차적 특성을 모호하게 만들 수 있습니다. 또한 ID의 임의 구성 요소는 동시 삽입 중에도 충돌을 방지합니다.
사용
이 구현을 통해 기본 키 값은 간결하고 고유한 정수가 됩니다. 주요 핵심 기능을 유지하면서 노출에 강합니다.
위 내용은 고유한 정수 식별자를 사용하여 Django의 기본 키를 어떻게 안전하게 난독화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!