SQL序列的安全性/自动递增整数值

时间:2014-07-12 09:56:59

标签: sql security primary-key surrogate-key

一位同事曾向我提到,在开发Web应用程序时,明确使用序列/自动递增整数(通常是主键)来唯一标识数据库中的值是一种安全风险,并且因为经常使用此类密钥as"代理键" (例如,对于内部识别记录和记录之间的关系),最安全的识别资源的方法是用于域主键。

采用以下示例。

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)
);

要访问类别,使用/category/(\d+)主键的网址为category_key。与使用/category/([^/]+)唯一键的网址name相比,它的安全性如何?

我唯一能想到的是,特定category_key更容易猜到(例如,添加一个),如果您还没有正确编码您的访问控制,这可能允许某人任意查看数据库中的任何类别。

1 个答案:

答案 0 :(得分:0)

我认为它不会破坏你的应用程序,这完全是猜测...... 说到安全性。对我来说,它更多的是关于加密和权限检查等等。总之,我认为使用自动增量与安全性之间没有关系。