Безопасность 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/(\d+) с использованием category_key основной ключ. Как это менее безопасно, чем URL /category/([^/]+) с использованием name уникальный ключ?

Единственное, о чем я могу думать, это то, что category_key гораздо проще угадать (например, добавить один), и если вы не закодировали свой контроль доступа должным образом, это может позволить кому-то произвольно просматривать любую категорию в базе данных.

1 ответ

Я не думаю, что это испортит ваше приложение, все дело в угадывании.. Когда дело доходит до безопасности. для меня это больше о шифровании и проверке разрешений и многом другом.. В заключение, я не думаю, что есть связь между использованием автоинкремента и безопасностью.

Другие вопросы по тегам