GUID 是好盐吗?我的注册/登录过程有什么缺陷吗?

2024-01-02

如果我的数据库中的表如下所示:

 userid uniqueidentifier
 username varchar(20)
 password varbinary(max)

当用户提交(注册)时,我将用户/通行证发送到存储过程。

存储过程创建一个新的 GUID(使用NEWID() http://msdn.microsoft.com/en-us/library/ms190348(SQL.90).aspx)然后我用哈希字节 http://msdn.microsoft.com/en-us/library/ms174415(SQL.90).aspxSQL Server 的 (sha1) 函数根据提供的 GUID+密码创建密码,然后将值插入到上表中。

当用户提交(登录)时,我将用户/密码发送到存储过程。

存储过程查找用户名并获取用户 ID,将 guid+密码的 hashbyte(sha1) 与密码字段进行比较。

你认为这个逻辑有什么缺陷吗?


这是相当标准的——一个指南对于盐来说就可以了。加盐的目的是为了防止彩虹攻击 http://en.wikipedia.org/wiki/Rainbow_table,几乎任何对每个用户来说随机的值(或者即使不是随机的,至少是不同的)都可以达到目的。

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

GUID 是好盐吗?我的注册/登录过程有什么缺陷吗? 的相关文章

  • 如何在 SQL 中将整数列值加 1

    我的问题是 如何将列的值加 1 例如 假设有一列ID值为 1 2 3 4 现在当我更新这张表时ID列应增加 1 Now ID将变成 2 3 4 5 为表中的每个值加一 UPDATE myTable SET ID ID 1 要创建一个新值 比
  • 如何从更多列中选择但按 1 列分组?

    SELECT studentnum FROM Atten WHERE att Yes AND unitCode MMA1034 GROUP BY studentnum HAVING COUNT lt 4 如何选择更多列 例如 还有学生姓名
  • 如何检查 Sql 服务器字符串是否为 null 或为空

    我想检查数据 但如果数据为空或为空则忽略它 目前查询如下 Select Coalesce listing OfferText company OfferText As Offer Text from tbl directorylisting
  • 如何在没有循环的情况下初始化哈希中的值?

    我正在尝试找出一种无需经过循环即可初始化哈希的方法 我希望使用切片来实现这一点 但它似乎没有产生预期的结果 考虑以下代码 usr bin perl use Data Dumper my hash hash currency symbol B
  • 如何解决将表达式转换为数据类型 int 时出现算术溢出错误?

    我有以下查询 CTE to remove outliers e g remove the fastest and slowest results WITH MinMaxCTE AS SELECT ServerName CONVERT VAR
  • SQL Server 2005 - 应该多久重建一次索引?

    我最近接手了一个项目 他们有一个 SQL 作业设置 每三个小时运行一次 它会重建 ASP NET 会员数据库表中找到的索引 每天重建索引 8 次 这看起来相当高 我每天都会获得大约 2000 个新用户 总共大约有 200 万注册用户 对于正
  • 将选择结果(一列)拆分为多列

    我一直在努力找出如何实现这一目标 但我认为我一开始就没有能力知道要寻找什么 我正在使用现有系统 我无法更改数据库架构 也无法规定用户如何输入数据 我必须利用我们现有的资源来工作 目前 我们的用户正在将统计数据放入表中的一个文本字段中 他们使
  • 如何为 bcrypt.hashpw 设置盐?

    salt yhnqazolr123098765 password bcrypt hashpw password salt repeatpassword bcrypt hashpw repeatpassword salt 我在第二行遇到错误
  • Sql Server:如何在 WHERE 子句中使用 MAX 等聚合函数

    我想获得该记录的最大值 请帮我 SELECT rest field1 FROM mastertable AS m INNER JOIN SELECT t1 field1 field1 t2 field2 FROM table1 AS T1
  • 根据插入顺序迭代哈希?

    不想对条目进行排序 使用它也不会保留顺序 foreach my val keys hash 默认情况下 Perl 5 中的哈希值是无序的 您可以使用tie http perldoc perl org functions tie html a
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • 同时使用 GUID 和自动递增整数

    我一直在研究使用 GUID 作为数据库中的主键 到目前为止 利似乎大于弊 然而 我发现 GUID 可能不是我想要的 在我的应用程序中 用户应该能够根据用户友好的 ID 来识别对象 因此 例如 如果他们想要获取特定产品而不输入全名 则可以使用
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • 我可以从 SQL Server 读取元数据来了解最后更改的行/表吗?

    我们有一个数据库hundreds的桌子 有没有某种metaSQL Server 中的数据源 我可以以编程方式查询以获取名称最后更改表和行 或者我们是否需要实施这个我们自己每个表中的字段称为上次更改日期时间 etc 就查明表最后一次修改的时间
  • SQL Server 架构和默认架构

    我的数据库中有一个模式定义 除了现在每次执行 sql 语句时我都必须提供模式 SELECT FROM myschema table 我使用 Management Studio 为我的用户设置了默认架构 并运行了ALTER USER myUs
  • 使用左连接在单个更新语句中更新多个表

    我意识到我所要求的可能是不可能的 我想基于 LEFT JOIN 和 WHERE 子句对两个单独的表执行 UPDATE 这是我的尝试 UPDATE PERIODDATES as pd periods2 as p2 SET pd PERIODC
  • Java AES 加盐加密

    好吧 事实证明我在加密 解密方面很糟糕 我只是不明白 我怎样才能让Java加密String message1 hello world with String salt mySalt 使用AES加密 加密后我该如何解密 如果您有时间提供最基本
  • mvc4 - db.SaveChanges() - 小数值超出范围

    我正在构建一个 MVC4 应用程序 它要求我在 创建 新记录时生成 21 位密钥 这是我定义数据库列的上下文 public class cust public int ID get set public decimal CPCUST KEY
  • MS SQL 2005 备份能否恢复到 MS SQL 2008 实例上?

    是否可以将 SQL Server 2005 数据库的备份恢复到 SQL Server 2008 的实例上 我需要重建一台服务器 因为它变得相当糟糕 所以我计划借此机会升级到 SQL 2008 并想知道我是否能够正常恢复我的备份 从 2005
  • 使用 Python 对 CSV 进行 MD5 哈希处理

    我有一个包含电子邮件地址的 csv 需要以 MD5 格式进行哈希处理 然后将哈希后的电子邮件保存为新的 csv 我还没有看到我在 SO 上的确切用例 也无法成功修改现有问题 原始文件路径为 Users username Downloads

随机推荐