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



一位同事曾经向我提到,在开发web应用程序时,显式地使用序列/自增整数(通常是主键)来唯一地标识数据库中的值是一种安全风险,并且由于这些键经常被用作"代理键"(例如,用于内部标识记录和记录之间的关系),最安全的标识资源的方法是使用域主键。

看下面的例子:

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更容易猜测(例如,添加一个),如果你没有正确编码你的访问控制,这可能允许某人任意查看数据库中的任何类别。

我不认为这会毁了你的应用,这只是猜测。说到安全。对我来说,更多的是关于加密和权限检查等等。总之,我认为使用自动递增与安全性之间没有关系。

相关内容

  • 没有找到相关文章

最新更新