ktz 在 3/4/2004 11:14:04 AM 说:你好神奇啊
| 犬者 |
| “说了你又不听,听又不懂,懂又不做,做又做错,错又不认,认又不改,改又不服,不服也不说,那叫我怎么办?!” |
|
【电脑】夸张的认证管理 开始做一个系统……一套也许不会有人去用的系统……但是,偶却尽情的玩着各种技术,进度非常缓慢……本来,今天晚上要做完的……但是,现在去只是做完一个登陆界面而已…… 几乎所有的系统都有会员注册……一直都很想做一套很牛X的会员注册系统出来…… 首先,一般人都很喜欢在所有的地方使用同一个密码,这样子是不好的……一旦有任何地方的密码泄露,结果就是全线奔溃……所以,密码不应该是由用户输入,而应该让系统自动生成…… 花了一点功夫,偶写了如下VB.Net代码: Dim i, j As Integer Dim r As New Random 有点讨厌ASCII code,65到90代表'A'到'Z',但是91到96代表的却是一些符号,97到122才是'a'到'z'……数字0-9则是用48到57代表。 大小些字母跟数字的取值被分成了三段。上面的算法只是大写字母的赋值范围里面生成随机数字,也就是说生成的密码会是由8到16个大写字母组成……稍微修改一下算法,也是可以生成大小写字母跟数字组成的随机密码,但是太麻烦了……而且,上面的算法已经可以生成: 然后,又有一个问题,倘若用户很喜欢这个随机生成的密码,拿到别的可以直接指定密码的地方用,一但系统数据泄漏,用户在其他地方的帐号不也跟着完蛋么? 所以,随机生成的这个密码还不可以明文保存在服务器上,必须使用不可逆算法进行加密,比方说md5。 写了如下VB.Net代码: Dim md5 As New System.Security.Cryptography.MD5CryptoServiceProvider Dim data() As Byte Dim newpass As Byte() '注意data跟newpass的声明方式 data = System.Text.Encoding.Unicode.GetBytes(password.ToCharArray) .Net Framework提供的md5类库,生成的是16bit的binary数组。一共有 系统的安全性应该是好了……但是,作为一套完善的系统,必须保证与用户的联系,至少,要有可以联系得到用户的email,也就是说,用户完成注册之后,必须发送一份确认信到用户填写的email帐号里面,并且在信里面提供一个连接,让用户访问该连接之后,系统才激活用户的帐号。这个连接必须是系统自动生成,并且是用户无法推算得到的,否则,像我这样的用户,依然会填写假的email地址,然后根据我推算出来的连接,激活自己的帐号。 什么东西是用户无法推算得到的呢?我们自然可以再随机生成一个新的“激活码”,但是,这样子做有一个缺点,数据库必须保留“激活码”这个数据,尽管这个数据只是使用一次。用户的密码已经是系统随机生成的,我们完全可以对这个密码进行处理,生成一个用户无法“推算”的连接。 newpass这个数组是保存在数据库里面的,读出来后,可以使用 这个String是Unicode的,可能是任何字符,而浏览器在发送URL的时候,会对地址进行处理,比方说,将空格转换为 %20这样的东西……事实上,在使用带有简体中文,也就是GB2312编码的URL时,都往往会发生错误,Unicode的URL,简直就是不可以想象的……在多数情况下,浏览器都会给出“Invalide URL”这样的错误。 在VB.Net里面,String这个类是带有GetHashcode这个method的,任何一个字符串经过系统内置的散列算法算出一个正整数(Java也是类似),在URL里面使用数字是完全不会有问题的。 而且,GetHashCode给出来的是数字!我们完全可以用各种用户无法推测的算法对这个数字进行变换,即使只是简单的加减乘除,即使用户有庞大取样,推系统所生成的URL的被其他人推算出来的可能性极低! 偶做的系统激活帐号的URL类似于: 后面1018421357这个数字,有谁能够推算得出来呢? 破解这样的加密算法难度不亚于攻击服务器,直接获取URL生成,帐号激活的程序。 但是,系统还是无懈可击的。ASP.Net不是ASP,ASP.Net的程序必须经过编译才能运行,即使服务器被攻击了,黑客也只能获取编译过后的程序,一个dll文件而已……据我所知,到目前为止,尚无反编译.Net程序的软件出现。 这样的认证管理,真的很夸张……我还居然把它做出来了……其实,很多网站都已经采用了这样的用户认证方式……不过……自己做的东西,感觉还是比较好的说……
问天 @3/4/2004 5:20:49 AM View blogs in this category:电脑 Please leave your comment here |
Navigation
Blogwind犬者首页 Contact 个人档案 ![]() “说了你又不听,听又不懂,懂又不做,做又做错,错又不认,认又不改,改又不服,不服也不说,那叫我怎么办?!”
Categories
死结(27)电脑(171) 心情(175) 天影(25) 乱弹(204) 博客(80) 音乐(18) 饕餮(30) 读书(19) 电影(27) 网摘(5) 希望(31) 汕头(10) 经济(5) 苹果(19) 跋涉(3)
Archive
2008年8月2008年7月 2008年6月 2008年5月 2008年4月 2008年3月 2008年2月 2008年1月 2007年12月 2007年11月 2007年10月 2007年9月 2007年8月 2007年7月 2007年6月 2007年5月 2007年4月 2007年3月 2007年2月 2007年1月 2006年12月 2006年11月 2006年10月 2006年9月 2006年8月 2006年7月 2006年6月 2006年5月 2006年4月 2006年3月 2006年2月 2006年1月 2005年12月 2005年11月 2005年10月 2005年9月 2005年8月 2005年7月 2005年6月 2005年5月 2005年4月 2005年3月 2005年2月 2005年1月 2004年12月 2004年11月 2004年10月 2004年9月 2004年8月 2004年7月 2004年6月 2004年5月 2004年4月 2004年3月 2004年2月 2004年1月 2003年12月
My Links
5Gbloglines 时尚摄影师奇科的博客 我们的漫画 颜如玉 最爱卫斯理 |