동료는 웹 응용 프로그램을 개발할 때 시퀀스/자동 증가 정수 (일반적으로 기본 키)를 사용하여 데이터베이스 내의 값을 고유하게 식별한다는 것은 보안이라고 말했습니다 그러한 키는 종종 "대리 키"(예 : 내부적으로 레코드와 레코드 간의 관계를 식별하는 데 사용)로 사용되기 때문에 리소스를 식별하는 가장 안전한 방법은 도메인 기본 키를 사용하는 것입니다.SQL 시퀀스 보안/자동 증가 정수 값
다음 예를 참조하십시오.
create table category
(
category_key serial not null primary key,
name character varying(255) not null,
unique(name)
);
create table product
(
product_key serial not null primary key,
product_id character varying(8) not null,
name character varying(255) not null,
unique(product_id)
);
카테고리에 액세스하려면 url은
category_key
기본 키를 사용하여
/category/(\d+)
입니다. 이 암호는
name
고유 키를 사용하는 URL
/category/([^/]+)
보다 어떻게 안전하지 않습니까?
제가 생각할 수있는 유일한 점은 특정 category_key
을 추측하는 것이 훨씬 쉽고 (예 : 하나 추가) 액세스 제어를 올바르게 코딩하지 않은 경우 다른 사람이 임의로 카테고리를 볼 수 있도록 허용 할 수 있습니다. 데이터베이스
쉽게 추측 할 수있는 유일한 이유가 내 마음 속에 있습니다. –
이 주제에 대한 좋은 답변은 다음과 같습니다. http://stackoverflow.com/a/7452072/2719186 데이터베이스에 민감한 데이터가 있는지 (카테고리와 제품은 특히 민감하지 않음) 여부와 누군가 ID 1, 2, 3, 4에 대한 호출을 통해 전체 데이터베이스를 긁을 수 있다면 문제가 될지 여부에 달려 있습니다. .. –
ID에 대한 지식이 권한 부여의 키로 사용되는 경우 예측 가능한 ID는 보안 문제입니다. – Gumbo