asp.net-membership – 用于创建.Net成员资格提供者用户的SQL
发布时间:2020-12-16 03:33:02 所属栏目:asp.Net 来源:网络整理
导读:我有一个SQL脚本,可以在我的数据库中创建用户. 它使用.Net成员资格存储过程. 此时它工作正常. 唯一的问题是密码保存为明文.我应该在这里更改为他们是盐渍/加密的(不知道在这里使用什么术语) GODECLARE @return_value int,@UserId uniqueidentifierEXEC @retu
我有一个SQL脚本,可以在我的数据库中创建用户.
它使用.Net成员资格存储过程. 此时它工作正常. 唯一的问题是密码保存为明文.我应该在这里更改为他们是盐渍/加密的(不知道在这里使用什么术语) GO DECLARE @return_value int,@UserId uniqueidentifier EXEC @return_value = [dbo].[aspnet_Membership_CreateUser] @ApplicationName = N'Theater',@UserName = N'sam.sosa',@Password = N'mypassword',@PasswordSalt = N'eyhKDP858wdrYHbBmFoQ6DXzFE1FB+RDP4ULrpoZXt6f',@Email = N'sam@Simple.com',@PasswordQuestion = N'Whats your favorite color',@PasswordAnswer = N'Fusia',@IsApproved = 1,@CurrentTimeUtc = '2010-03-03',@CreateDate = '2010-03-03',@UniqueEmail = 1,@PasswordFormat = 0,@UserId = @UserId OUTPUT SELECT @UserId as N'@UserId' SELECT 'Return Value' = @return_value GO 谢谢! 解决方法
在引擎盖下它看起来像“Hashed”密码存储模式,它只是计算:
SHA1(盐密码) Salt存储为Base64编码,因此必须在与(Unicode)密码连接之前对其进行解码.最后,结果是Base64编码存储. 以下(可怕的)SQL将输出一个适当编码的值,可以代替您当前拥有的“mypassword”.您还必须将@PasswordFormat设置为1以指示密码已存储为哈希值. declare @salt nvarchar(128) declare @password varbinary(256) declare @input varbinary(512) declare @hash varchar(64) -- Change these values (@salt should be Base64 encoded) set @salt = N'eyhKDP858wdrYHbBmFoQ6DXzFE1FB+RDP4ULrpoZXt6f' set @password = convert(varbinary(256),N'mypassword') set @input = hashbytes('sha1',cast('' as xml).value('xs:base64Binary(sql:variable(''@salt''))','varbinary(256)') + @password) set @hash = cast('' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable(''@input'')))','varchar(64)') -- @hash now contains a suitable password hash -- Now create the user using the value of @salt as the salt,and the value of @hash as the password (with the @PasswordFormat set to 1) DECLARE @return_value int,@UserId uniqueidentifier EXEC @return_value = [dbo].[aspnet_Membership_CreateUser] @ApplicationName = N'Theater',@Password = @hash,@PasswordSalt = @salt,@PasswordFormat = 1,@UserId = @UserId OUTPUT SELECT @UserId as N'@UserId' SELECT 'Return Value' = @return_value (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何从强类型视图中隐藏实体框架实体属性?
- asp.net-mvc – 使用View.Render方法将MVC视图转换为字符串
- asp.net – 将webforms项目转换为混合MVC4项目
- 如何使用ASP.net C#将SQL select存储到gridview?
- asp.net – 检测浏览器刷新
- asp.net-mvc – 支持URL中任何位置的catch-all参数的Asp.ne
- asp.net-core – 如何轻松地从ASP.NET Core 2.1迁移到2.2?
- asp.net – SQL Server 2005:事务死锁
- asp.net – 从Global.asax中获取操作的绝对URL路径
- ASP.NET C#MVC如何从View中获取控制器的属性?