2014-07-12 4 views
0

동료는 웹 응용 프로그램을 개발할 때 시퀀스/자동 증가 정수 (일반적으로 기본 키)를 사용하여 데이터베이스 내의 값을 고유하게 식별한다는 것은 보안이라고 말했습니다 그러한 키는 종종 "대리 키"(예 : 내부적으로 레코드와 레코드 간의 관계를 식별하는 데 사용)로 사용되기 때문에 리소스를 식별하는 가장 안전한 방법은 도메인 기본 키를 사용하는 것입니다.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을 추측하는 것이 훨씬 쉽고 (예 : 하나 추가) 액세스 제어를 올바르게 코딩하지 않은 경우 다른 사람이 임의로 카테고리를 볼 수 있도록 허용 할 수 있습니다. 데이터베이스

+0

쉽게 추측 할 수있는 유일한 이유가 내 마음 속에 있습니다. –

+1

이 주제에 대한 좋은 답변은 다음과 같습니다. http://stackoverflow.com/a/7452072/2719186 데이터베이스에 민감한 데이터가 있는지 (카테고리와 제품은 특히 민감하지 않음) 여부와 누군가 ID 1, 2, 3, 4에 대한 호출을 통해 전체 데이터베이스를 긁을 수 있다면 문제가 될지 여부에 달려 있습니다. .. –

+1

ID에 대한 지식이 권한 부여의 키로 사용되는 경우 예측 가능한 ID는 보안 문제입니다. – Gumbo

답변

0

나는 앱을 망칠 것이라고 생각하지 않는다. 추측에 관한 것이 전부다 .. 보안에 관해서. 나를 위해 그것은 암호화와 권한 검사에 관한 것이고 더 많은 것입니다. 결론적으로, 나는 자동 증분과 보안을 사용하는 것 사이에 관계가 있다고 생각하지 않습니다.