NEWSEQUENTIALID 的可预测性如何?

2024-01-26

根据微软的文档NEWSEQUENTIALID http://msdn.microsoft.com/en-us/library/ms189786.aspx,NEWSEQUENTIALID 的输出是可预测的。但可预测性如何呢?假设我有一个 GUID,是由NEWSEQUENTIALID,这有多难:

  • 计算下一个值?
  • 计算之前的值?
  • 计算第一个值?
  • 即使根本不知道任何 GUID,也要计算第一个值?
  • 计算行数?例如。当使用整数时,/order?id=842告诉我应用程序中有 842 个订单。

以下是有关我正在做的事情以及各种权衡的一些背景信息。

中的一个security使用 GUID 相对于整数作为主键的好处是 GUID 很难猜测。例如。假设黑客看到如下 URL/user?id=845他可能会尝试访问/user?id=0,因为数据库中的第一个用户很可能是管理用户。此外,黑客可以迭代/user?id=0..1..2快速聚集所有用户。

同样,一个privacy整数的缺点是它们会泄漏信息。/order?id=482告诉我,该网店自上线以来已有 482 个订单。

不幸的是,使用 GUID 作为主键已众所周知表现缺点。为此,SQL Server 引入了NEWSEQUENTIALID功能。在这个问题中,我想了解如何预测输出NEWSEQUENTIALID is.


底层操作系统功能是UuidCreateSequential http://msdn.microsoft.com/en-us/library/windows/desktop/aa379322%28v=vs.85%29.aspx。该值源自您的网卡之一的 MAC 地址和每个操作系统启动增量值 http://ayende.com/blog/4628/implementing-createsequentialuuid. See RFC4122 http://www.ietf.org/rfc/rfc4122.txt。 SQL Server 做了一些字节改组 http://blogs.msdn.com/b/dbrowne/archive/2012/07/03/how-to-generate-sequential-guids-for-sql-server-in-net.aspx使结果正确排序。因此,从某种意义上说,该价值是高度可预测的。具体来说,如果您知道一个值,您可以立即预测相似值的范围。

然而,人们无法预测相当于id=0,也不能预测52DE358F-45F1-E311-93EA-00269E58F20D表示商店至少售出 482 件商品。

唯一“批准”的随机生成是CRYPT_GEN_RANDOM http://msdn.microsoft.com/en-us/library/cc627408.aspx(它包裹着CryptGenRandom http://msdn.microsoft.com/en-us/library/windows/desktop/aa379942%28v=vs.85%29.aspx)但这显然是一个可怕的关键候选人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NEWSEQUENTIALID 的可预测性如何? 的相关文章

  • 按小时拆分日期/时间数据并将日期/时间范围展开为行

    我正在尝试使用 SQL Server 将一系列日期 时间数据扩展为多行 例如 我的数据看起来像 Date StartTime EndTime EmployeeID ShiftType 10 1 2019 8 30 00AM 4 57 00P
  • 指数数组的边界之外。 (微软.SqlServer.smo)

    我在用SQL Server 2008 R2 它运行良好 但最近 我改变了我的托管服务器 我发现他们已经安装了SQL Server 2012在服务器上 现在 问题是通过连接服务器数据库后SQL Server 2008 R2 当我单击任何表名称
  • 为什么某些字符无法从 CFQUERY 正确注入到 SQL Server?

    我有一个在 Lucee 上运行的 Coldfusion 应用程序 它连接到 SQL Server 数据库 当我直接在 SQL Server 管理器中运行以下查询时 UPDATE article SET content 20m WHERE i
  • Oracle 获取列值发生变化的行

    假设我有一张桌子 比如 ID CCTR DATE 1 2C 8 1 2018 2 2C 7 2 2018 3 2C 5 4 2017 4 2B 3 2 2017 5 2B 1 1 2017 6 UC 11 23 2016 还有其他字段 但我
  • 在 plsql 中立即执行

    如何从这段代码中得到结果 EXECUTE IMMEDIATE SELECT FROM table name through for loop 通常的方法看起来像这样 for items in select from this table l
  • 在SQL Server中仅获取浮点数的小数部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 SQL Server 2008
  • 仅当变量不为空时 SQL 添加过滤器

    您好 我有疑问如下 SELECT route id ROUTE ID FROM route master NOLOCK WHERE route ou 2 AND route query l s query AND lang id 1 这里
  • 在单个更新语句上使用事务

    我在工作中为一些 SP 配音 我发现编写代码的人在单个更新语句上使用了事务 如下所示 begin transaction single update statment update table whatever with whatever
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 如何检测 Postgres 中持有锁的查询?

    我想不断跟踪 postgres 中的互锁 我碰到锁具监控 https wiki postgresql org wiki Lock Monitoring文章并尝试运行以下查询 SELECT bl pid AS blocked pid a us
  • 如何打印Oracle中过程的定义?

    oracle中有没有办法查看过程的结构是什么 我正在尝试记录并运行程序 并希望将实际的程序结构存储在我的日志中 您可以查询ALL SOURCE table SELECT text FROM all source WHERE owner lt
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • PreparedStatement setnull方法中Types.INTEGER和Types.NULL的区别

    下面的说法有什么区别 PreparedStatement setNull 1 java sql Types NULL and PreparedStatement setNull 1 java sql Types INTEGER 第一个指示驱
  • SQL Server 中的动态透视多列

    我有一张这样的桌子 Id Name FromAddress ToAddress 1 Joey ABC JKL 2 Joey DEF MNP 3 Joey GHI OQR 我正在 SQL Server 中寻找带有动态数据透视表的以下输出 Na
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • SQL Server Express 到 .mdf 文件的连接

    两部分问题 我使用 VS 2015 Update 3 创建了一个 ASP NET MVC 5 应用程序 我在本地计算机上完成了该项目 突然 我无法再通过 SQL Server 对象资源管理器连接到 mdf数据库文件并出现以下错误 无法打开数
  • SQL Server 相当于 MySQL 的 USING

    在 MySQL 中 当您连接不同表中具有相同名称的列时 可以在连接中使用关键字 USING 例如 这些查询产生相同的结果 SELECT FROM user INNER JOIN perm USING uid SELECT FROM user
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • 让 Prometheus 发送 SQL 查询

    我正在尝试使用普罗米修斯 https prometheus io 监视我的 MySQL 数据库 但似乎找不到添加 SQL 查询的区域 例如 我想运行一个返回值的 SQL 查询 然后将该值添加到图表中 发送警报 有没有办法让 Promethe

随机推荐

  • 在 swift 上重写 NSObject 中的描述方法

    当我尝试在 xcode 项目中构建一个对象时 出现一个编译器错误 这是代码 import UIKit class Rectangulo NSObject var ladoA Int var ladoB Int var area Int ge
  • android中httppost和httpget方法的区别? [复制]

    这个问题在这里已经有答案了 谁能告诉我两者之间的区别Httpost and Httpget method Httpclient可以执行POST和GET方法 请解释一下方法1和方法2的区别 1 httpclient execute httpp
  • 如何在 Symfony 2 中为数据库视图设置实体(学说)

    假设我有一个视图表 我想将数据从它获取到一个实体 我可以 以及如何 创建实体类来执行此操作 不需要保存操作 我只是想展示它们 接受的答案是正确的 但我想提供一些您可能需要考虑的其他建议 将您的实体标记为只读 将构造函数设为私有 以便只有 D
  • 如何让Android Webview背景透明在KITKAT(4.4)

    最近 我在Android上实现了基于Web的应用程序 我想让webview背景颜色透明的 搜索后 我发现 Webview 有两行 newWebView setBackgroundColor 0x00000000 newWebView set
  • 无法与 PayPal 服务器通信

    Update hideCreditCardButton在这个问题上没有任何作用 这只是一个巧合 当我在没有信用卡的情况下尝试它时 它对我有用 但情况不再是这样了 我确实工作 但只有 20 30 的时间 我正在使用 PayPal iOS SD
  • wait Task.Delay() 延迟的时间比预期的要长

    我有一个大量使用 Net 任务的 Windows 服务应用程序 我对它们有很好的了解 但我不是专业人士 并且遇到了问题 我有一种情况 我的await Task Delay 有时需要比应有的时间长得多 最多长 60 秒 我确信这是由于我正在做
  • 如何在非 GUI 应用程序中使用 QWebPage

    我想用QWebPage在非 GUI Qt 应用程序中 我的意思是我根本不想与窗口服务器通信 不过 使用 QtGui 不是问题 QWebPage内部创建一些QWidget实例 因此 使用QCoreApplication不可能 当创建一个QAp
  • 包含多个 Chart.js 图表的 pdf 页面

    我使用 Chart js 生成一个包含多个图表的报告页面 我需要将此报告导出为 PDF 通过搜索可以找到许多解决方案 但我找不到具有多个画布元素的解决方案 唯一可用的解决方案似乎是循环遍历所有图像 并使用图像重新创建报告 然后将其下载为 p
  • onKey onKeyDown 不起作用

    我正在尝试在我的 Android 应用程序中注册方向键 电视遥控器方向键点击 我目前正在使用 Android 模拟器进行测试 并尝试在额外设置菜单下使用方向键输入进行单击 但我不确定为什么这不起作用 任何帮助将不胜感激 public cla
  • 如何使用 Java 复制文件并将其粘贴到剪贴板?

    如何使用 Java 复制文件并将其粘贴到剪贴板 我的程序可以复制但不能粘贴 它给 线程 main 中的异常 java lang ClassCastException java util Arrays ArrayList 无法转换为 java
  • Plotly.js - gd.data 必须是一个数组

    我正在使用 Plotly js 库来绘制 3D 图形 我的计划是将 4 条迹线绘制到一张 3D 图中 但是当我尝试这样做时 我的网站遇到了一些奇怪的行为 有时 当我加载网站时 我没有收到任何错误 并且所有 4 条轨迹都完美加载到我的 3D
  • 将 GWT 应用程序部署为单个 JavaScript 文件

    GWT 应用程序的已编译 JavaScript 输出分为不同的文件 例如 缓存 html gwt rpc 托管 html nocache js 我知道这样做的目的是最小化必须由用户下载的 JavaScript 的大小 例如 Firefox
  • 更新表插入 VARBINARY 数据

    当我运行 sql 查询时 我得到如下信息 不允许从数据类型 varchar 到数据类型的隐式转换 varbinary 使用 CONVERT 函数运行此查询 严重程度 16 我想要插入的数据看起来像 000012000000000000100
  • 如何使用 Windows 任务计划程序自动执行 PowerShell 脚本?

    我有一个发送电子邮件的 PowerShell 脚本 我想每 1 分钟自动执行一次该脚本 我该如何使用任务计划程序来做到这一点 目前我已经创建了一个任务并提供了脚本的路径 但是该调度程序打开我的脚本 而不是执行 我使用的是 Windows 7
  • JDK8 是 JBoss 6 AS 支持的平台吗

    我们正在将应用程序 java 平台升级到最新的稳定平台 并且我们正在使用 Jboss 6 AS Is 甲骨文JDK8JBoss 6 AS 支持的平台 不 它不会起作用 JBoss AS 6和 7 不兼容Oracle JDK 1 8 您需要下
  • 阻止 GSON 序列化 JSON 字符串

    我是 gson 的新手 并且有一个尚未找到答案的新手问题 所以请耐心等待 StackOverflow 和 google 不是我的朋友 我有一个 java 类 User 其属性之一 externalProfile 是一个包含已序列化 JSON
  • 为什么 MFunctor 的“hoist”没有“Monad n”约束?

    我有一个协程变压器 data Step y m a Done a Yield y CoT y m a data CoT y m a CoT m Step y m a with Monad实例 unCoT CoT y m a gt m Ste
  • Laravel - 针对不同用户使用唯一参数重复输入

    使用 Laravel 5 2 我正在 Laravel 中开发一个电话簿项目 您将联系信息存储在名为的表中Contacts 要在此表中创建新联系人 您必须注册 并且您的信息将记录在users table 我创建了一个视图来显示Contacts
  • Firemonkey T编辑高度

    我正在使用 Delphi Seattle 我的应用程序适用于 Windows 桌面 我正在尝试更改 TEdit 的字体大小 因此高度也被修改 在设计时一切正常 但当我运行应用程序时 TEdit 会忽略高度修改并剪切文本 我试图找到Fixed
  • NEWSEQUENTIALID 的可预测性如何?

    根据微软的文档NEWSEQUENTIALID http msdn microsoft com en us library ms189786 aspx NEWSEQUENTIALID 的输出是可预测的 但可预测性如何呢 假设我有一个 GUID