- 浏览: 721563 次
- 性别:
- 来自: 南宁
文章分类
最新评论
-
如果我爱上你的笑容:
牛腩老师讲的课很棒 目前新闻发系统学习中 `(*∩_∩*)′
64位win8.1系统安装intelhaxm -
k04110411:
jhlovett 写道牛哥,想问下 public void P ...
ASP.NET通过HTML的上传文件标签来上传文件 -
liuzhijie3:
我也留个脚印用到了,讲的不错
.NET中获取字符串的MD5码 -
han_yankun2009:
,楠老师不错呀
在一堆数中查询相加得某个数的组合 -
allstara609:
请问牛老师,datalist中如何去掉数字中多余的0?
去掉数字中多余的0(ASP.NET)
公司网站的用户管理采用的是ASP.NET内置的membership管理,在web.config文件中的密码格式配置是加密了的,passwordFormat="Hashed",这样在用户注册的时候存到数据库中的密码都是加密了的,如果你忘记密码了要找回密码的时候必须要记得注册时写的密码问题答案,可是如果密码问题答案也忘记的话。。。因为密码是加了密的,所以也不知道他的密码的生成规律,直接改数据库也不懂怎么改。。。
这个问题在以前的时候碰到过,当时特意上网搜索了一下,竟然没有发现,不知道是不是我的关键字输入错误还是怎么的,今天上台湾的论坛逛成人版块的时候发现论坛中的编辑版块有篇文章是教你怎么样在不记得密码,利用了membership其中的一个存储过程,废话少说,亮code:
这样就把密码重置为123456了
刚刚在做membership的测试的时修实然想到,数据表aspnet_Membership中的Password字段是存储密码的,FormatPassword字段是表示密码的存储格式的,0是明码,1是加密过的,假如我在数据库中把已经加密了的密码的FormatPassword改为0,然后Password改成123456, 测试,哈哈,竟然也能登陆了!!!
这个问题在以前的时候碰到过,当时特意上网搜索了一下,竟然没有发现,不知道是不是我的关键字输入错误还是怎么的,今天上台湾的论坛逛成人版块的时候发现论坛中的编辑版块有篇文章是教你怎么样在不记得密码,利用了membership其中的一个存储过程,废话少说,亮code:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Configuration; using System.Data.SqlClient; using System.Web.Security; using System.Data; public partial class ResetPassword : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } // 重置 protected void btnReset_Click(object sender, EventArgs e) { string connStr = WebConfigurationManager.ConnectionStrings["conn"].ToString(); string username = txtUserName.Text.Trim(); if (username.Length==0) { Response.Write("请输入用户名!"); return; } //=== 产生加密用的密码密钥 === string salt = GenerateSalt(); //=== 将明码密码加密(此时密码为"P@ssw0rd" 当然也可随机数生成) === string password = EncryptToHashString("123456", salt, "SHA1"); SqlConnection conn = new SqlConnection(connStr); conn.Open(); //=== 在此我们呼叫 Membership 提供者 数据库里的预存程序来重置密码 === SqlCommand cmd = new SqlCommand("aspnet_Membership_SetPassword", conn); cmd.CommandType = CommandType.StoredProcedure; //=== 目前使用 Membership 提供者的 web 应用程序名称 === cmd.Parameters.Add(new SqlParameter("@ApplicationName", Membership.ApplicationName)); //=== 要重置密码的用户账号 === cmd.Parameters.Add(new SqlParameter("@UserName", username)); //=== 加密过的密码 === cmd.Parameters.Add(new SqlParameter("@NewPassword", password)); //=== 密码加密密钥(一定和使用加密密码的密钥一样,不要再重新产生) === cmd.Parameters.Add(new SqlParameter("@PasswordSalt", salt)); //=== 重置密码的时间 === cmd.Parameters.Add(new SqlParameter("@CurrentTimeUtc", DateTime.Now)); //=== 密码加密的格式(此时是Hash1,注意传入参数是int型态。) === cmd.Parameters.Add(new SqlParameter("@PasswordFormat", Membership.Provider.PasswordFormat.GetHashCode())); //=== 宣告一个可以接收回传值得参数 === SqlParameter returnValue = new SqlParameter(); returnValue.ParameterName = "returnValue"; returnValue.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(returnValue); //=== 执行预存程序 === cmd.ExecuteNonQuery(); conn.Close(); //=== 检查重置密码是否成功 === if (returnValue.Value.ToString() == "0") Response.Write("重置密码成功!!"); else Response.Write("重置密码失败!!"); } /// <summary> /// 密码加密钥 /// </summary> /// <returns></returns> public string GenerateSalt() { byte[] data = new byte[0x10]; new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(data); return Convert.ToBase64String(data); } /// <summary> /// 哈希密码加密(不可还原) /// </summary> /// <param name="s">原始字符串</param> /// <param name="saltKey">Salt加密字符串</param> /// <param name="hashName">加密格式(MD5, SHA1, SHA256, SHA384, SHA512.)</param> /// <returns>加密过的密码</returns> public string EncryptToHashString(string s, string saltKey, string hashName) { byte[] src = System.Text.Encoding.Unicode.GetBytes(s); byte[] saltbuf = Convert.FromBase64String(saltKey); byte[] dst = new byte[saltbuf.Length + src.Length]; byte[] inArray = null; System.Buffer.BlockCopy(saltbuf, 0, dst, 0, saltbuf.Length); System.Buffer.BlockCopy(src, 0, dst, saltbuf.Length, src.Length); System.Security.Cryptography.HashAlgorithm algorithm = System.Security.Cryptography.HashAlgorithm.Create(hashName); inArray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inArray); } }
这样就把密码重置为123456了
刚刚在做membership的测试的时修实然想到,数据表aspnet_Membership中的Password字段是存储密码的,FormatPassword字段是表示密码的存储格式的,0是明码,1是加密过的,假如我在数据库中把已经加密了的密码的FormatPassword改为0,然后Password改成123456, 测试,哈哈,竟然也能登陆了!!!
- membership测试.zip (581.2 KB)
- 描述: 源文件下载
- 下载次数: 46
发表评论
-
用.NET CORE做项目,VS里编译碰到‘。。。。包降级。。。。’错误
2018-07-02 18:00 628用.NET CORE做项目,VS里编译碰到‘。。。。包降级。 ... -
VS2017中建立ASP.NET MVC 4.0项目
2018-02-04 15:35 714新的项目需要运行在WIN2003上,又不想用ASPX了,只好 ... -
用sendcloud来发邮件
2018-02-04 12:25 439平时发验证码邮件都是用免费域名邮箱,但是有时一频繁发多了就发 ... -
asp.net 中用easyui中的treegird的简单使用
2018-02-02 11:22 367几乎每个‘数人头’项目中都会用到的功能,这里先记下来,以后直 ... -
sql server中调用c#写的dll里的方法
2018-01-12 22:05 403最近有一项目: 一超市管理系统单机版,运行在WIN20 ... -
ASP.NET MVC中切换模板页(不同目录的cshtml文件)
2017-12-26 20:42 757看来以后建立一个父类控制器还是有必要的。。。 usi ... -
微信公众号支付安卓和WP手机能支付,苹果手机支付不了的问题解决
2016-03-10 22:57 444花了几天时间,终于搞好了,代码是从官网上下的.NET DEMO ... -
VS2015预览版体验
2014-11-15 21:42 18594.NET开源了,JAVA颤抖吧 ... -
在一堆数中查询相加得某个数的组合
2012-01-17 16:03 1341如题,一个网友问的,我又去问其他的网友,再网上搜索,发贴问,最 ... -
asp.net中使用swfupload上传大文件
2012-01-12 15:44 4633花了一天多时间研究出来的,其实也就是网上下别人的代码然后 ... -
repeater控件在绑定的时候添加行号
2011-12-26 20:55 1401最好的方法当然就是在提取数据的时候连行号也一起取出来,SQL ... -
asp.net中使用MYSQL参数化的方法
2011-12-14 10:34 3370在做一个项目,ASP.NET操作MYSQL数据库的,使用参数化 ... -
去掉数字中多余的0(ASP.NET)
2011-11-16 15:08 1768有这样一个需求,见下图:具体的在ASP.NET中的实现代码如下 ... -
牛腩购物网
2011-02-12 14:11 1219牛腩购物网 最新出的视频,演示网站 http: ... -
AJAX顺序输出
2010-10-13 10:54 1339在安装大多数CMS的时候都会在安装界面上看到这样的一个效果: ... -
获取本周的周一和周日
2010-09-17 11:42 1587// 获取本周 ... -
ASP.NET弹出遮罩层示例
2010-08-03 20:31 4759从某收费项目中提取出来的,网上一高手写的JQUERY插件,作用 ... -
WebService简单示例
2010-08-03 20:30 1412记录一下,以备后用: using System; u ... -
ASP.NET中递归绑定DDL下拉控件
2010-08-03 20:26 1388做个记录,省得以后用到的时候都得再找以前写的代码,而且发现以前 ... -
刚刚找到的IP地址对应地区数据库
2010-06-15 15:35 2328项目原因,网上下载了 We7 CMS安装版,(想下载源 ...
相关推荐
ASP.NET membership是一个强大的身份验证和用户管理框架,用于构建安全的Web应用程序。它提供了一种标准的方法来管理和验证用户账户,而无需从头开始编写所有相关的安全代码。在这个主题中,我们将深入探讨ASP.NET ...
在这个“asp.net 用户登录注册,修改密码小案例”中,我们将深入探讨如何使用ASP.NET来实现这些常见的用户管理功能。 一、用户登录系统 1. **身份验证(Authentication)**:ASP.NET 提供了多种身份验证机制,如...
用户收到邮件后,需在指定时间内在网站上输入这个代码或新密码,以完成密码重置过程。这通常涉及到邮件服务器的配置以及安全性问题,如加密传输。 用户注册通常包括收集用户的基本信息,如用户名、密码、电子邮件等...
本文将深入探讨"密码管理专家"这一主题,基于C# ASP.NET的技术背景,阐述如何构建一个安全的密码管理系统。 首先,密码管理是网络安全的重要组成部分,它涉及到用户账户的安全存储和验证。在C# ASP.NET环境下,我们...
ASP.NET 提供了 `Membership` 类库,包含 `HashPasswordForStoringInConfigFile` 方法来处理密码哈希。 4. **数据库交互**:使用ADO.NET或Entity Framework等ORM工具将用户信息存入数据库。在ASP.NET中,常常使用...
ASP.NET 是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能和工具,使得开发者能够高效地创建动态网站、Web服务以及Web应用程序。在“ASP.NET用户登录与注册”这个主题中,我们将深入探讨如何利用ASP...
在ASP.NET中,可以通过 Membership API 来实现这些功能,例如创建新用户、验证用户凭据、修改用户信息等。同时,Role Provider 可以用于实现角色基线的权限分配,将用户分配到不同的角色,从而控制他们对网站资源的...
同时,ASP.NET还提供了 Membership 和 Profile API,简化了用户管理和个性化设置的开发。 对于压缩包内的"ASP.NET会员管理系统",我们可以假设它包含了以下关键组件: - 注册和登录页面:用户注册新账户或登录现有...
ASP.NET提供了Membership API,它支持哈希和盐值加密,使得即使数据库被泄露,密码也不能轻易被还原。同时, Membership API 还包含了一些其他用户管理功能,如重置密码、激活账户等。 在"仓库管理系统"这个项目中...
ASP.NET提供Membership API,帮助开发者处理用户注册过程,包括密码复杂度检查、密码哈希加密等安全措施。同时,可以使用验证控件(如RequiredFieldValidator、RegularExpressionValidator)确保输入数据的有效性。 ...
Membership API 是ASP.NET提供的一套用于用户管理的类,包括用户注册、验证、密码重置等功能。Role Provider 则是用来管理用户角色的,便于实现基于角色的授权。 另外,为了提高安全性,应确保对用户输入进行适当的...
ASP.NET Membership API 提供了一套全面的工具,用于处理用户账户管理,包括注册、登录、密码重置等功能。这个Login源码可能利用了Membership API来创建和管理用户账户。例如,`Membership.CreateUser()` 方法可以...
- 用户身份验证与授权:网上书店可能使用ASP.NET的成员资格(Membership)和角色(Roles)系统,来管理和控制用户的登录、注册以及权限分配。 - 数据绑定和控件:ASP.NET控件如GridView、ListView等,能方便地绑定...
ASP.NET 是一种由微软开发的服务器端Web应用程序框架,用于构建动态、数据驱动的Web应用程序。这个"asp.net 注册模块"的资源是为初学者准备的,它提供了一个基本的用户登录和注册功能的实现,这对于理解Web应用中的...
再来,**找回密码** 功能是为用户提供忘记密码时重置密码的途径。这通常涉及到发送验证邮件到用户注册时提供的邮箱地址,用户点击邮件中的链接来设置新密码。ASP.NET提供了`ResetPassword()`方法,结合`...
5. **密码重置与恢复**:ASP.NET 2.0还提供了方便的密码重置和恢复机制。例如,PasswordRecovery控件允许用户通过已验证的电子邮件地址来重置密码,增加了用户体验的安全性。 6. **自定义验证**:虽然ASP.NET 2.0...
2. **创建登录页面**:创建一个ASP.NET Web Form(如Login.aspx),在此页面上设计登录表单,包含用户名和密码输入框,以及登录按钮。同时,需要添加服务器端代码来处理登录逻辑。 3. **实现登录逻辑**:在服务器端...
ASP.NET中的Membership Provider和Role Provider可以简化这些任务,通过预定义的接口和数据库架构,快速实现用户账户的创建、验证和管理。 产品分类查询是购物网站的关键功能之一。ASP.NET结合SQL Server或其他...