SQL Server Int主键和Guid

Srb*_*711 1 .net sql sql-server

我最近移动了公司,他们在SQL Server中做了一些我以前从未见过的事情.我习惯使用主键列作为int,在插入时递增,偶尔我看到guids的使用,但在这里他们使用两者,见下文.

PrimaryID | GUID | RestOfColumns
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么?在问这个问题时,他们告诉我这是针对SQL注入的另一层保护.在存储过程中,他们使用guid查找主键ID然后再使用id,我个人看不到好处?

我的问题是:

  • 在代码中暴露主键是否存在安全风险?
  • 使用guid获取主键有什么好处吗?

编辑:

用法示例(伪代码):

  1. 我需要一个联系人.
  2. 从QueryString中检索联系人Guid.
  3. 调用SQL Server存储过程以获取联系.
  4. 在存储过程中:根据guid在联系表中查找id.
  5. 使用id作为外键,在其他表中获取相关值.
  6. 返回数据.

Tab*_*man 5

如果有人查看您网站的html源代码,他们可能会看到他们正在提交表单并传递他们的ID为"1003".因此,从那里,他们可以构建一个表单,传递ID"1002"并查看其他人的数据.它不完全是"SQL注入",它更像是参数猜测.

但是如果他们看到他们的ID是一个GUID,它看起来就像是随机字符,他们就会更难以猜测系统中可能存在的其他有效ID.