我正在从网址屏蔽我的ID。我通过在URL中使用GUID
而不是主键(有人可以轻易猜出)来解决这个问题。此GUID将自身映射到记录,就像主键一样。
这是一个不错的解决方案吗?有人必须猜测GUID以查看其他人的数据。我在这里缺少安全漏洞吗?
如何更新现有数据库以使用PostgreSQL循环记录以使用唯一GUID更新每条记录?
答案 0 :(得分:2)
您也可以创建没有Postgres扩展名的GUID,例如: G:
ALTER TABLE my_table ADD COLUMN guid UUID
DEFAULT MD5(RANDOM()::TEXT || ':' || CURRENT_TIMESTAMP)::UUID NOT NULL;
如果您不需要使用默认值定义GUID,则可以使用行数据进行生成,例如主键:
BEGIN;
ALTER TABLE my_table ADD COLUMN guid UUID;
UPDATE my_table SET guid = MD5(id::TEXT || ':' || CURRENT_TIMESTAMP)::UUID;
ALTER TABLE my_table ALTER guid SET NOT NULL;
END;
答案 1 :(得分:0)
uuid-ossp
扩展程序具有生成随机uuids的功能。
首先:
create extension "uuid-ossp";
然后:
alter table url add column guid uuid not null default uuid_generate_v4();