仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 728|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之为Serv-U供应在线修正暗码功效

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:34:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。serv-u|在线  因为一样平常事情的必要,单元利用Serv-U架设了一个FTP服务器,但是自从接办以后发明存在着一个十分严峻的成绩,这个FTP服务器是对外公然的,竟然良多用户都没有设置暗码。假如强迫请求一切人设置暗码又必需在服务器上设,如许岂不是要一切人都把本人的暗码告知办理员吗,究竟良多人习气于用统一个暗码的。怎样办呢?最好的举措固然是可以供应一个Web页面来供应暗码的修正功效。
  说干就干,在网上查了一下,有一种办法是利用Serv-U本身供应的ODBC功效,用数据库来存储暗码,经由过程间接对数据库举行操纵来完成暗码的修正功效,但经由测验这类办法其实不太可行。由于这个FTP服务器已运转了一年之久,内里已有快要六十个用户,要将这些用户从Ini文件移植到数据库呈现毛病的概率仍是对照高的,还不如间接对INI文件举行操纵来得爽性。
  起首是要弄分明Serv-U的用户信息在INI文件中是怎样保留的,暗码又是怎样加密的。INI文件的布局对照复杂,修正暗码的话只需找到以[User=@UserID|1]节,并修正其下的Password键的值便可。@UserID指的是用户的登录ID。
1[GLOBAL]
2Version=6.1.0.5
3PacketTimeOut=300
4
5
6
7[Domain1]
8User1=
9User2=
10User3=
11
12
13
14[USER=abc|1]
15Password=niE383DC3710266ECAE04A6B3A18A2966D
16HomeDir=D:
17AlwaysAllowLogin=1
18ChangePassword=1
19TimeOut=600
20Note1="Wizardgeneratedaccount"
21Access1=D:
22
23
  用户暗码的加密办法能够在Ser-U官方网站的常识库查到
  http://rhinosoft.com/KBArticle.asp?RefNo=1177&prod=su
ManuallyEnteringEncryptedPasswordsintotheServUDaemon.iniFile
Togenerateanencryptedpassword,firsttworandomcharacters(thesalt-intherangea..z,A..Z)areaddedtothebeginningoftheclear-textpassword.ThisisthenhashedusingMD5andtheresultinghashishex-encoded.Theresultofthisiswrittenasplain-textstartingwiththe2saltcharactersfollowedbythehex-encodedhash.
Forauseraccountinthe.inifile,thiswilllooklike:
Password=cb644FB1F31184F8D3D169B54B3D46AB1A
Thesaltisthestring"cb",theMD5hashis"644FB1F31184F8D3D169B54B3D46AB1A".
Whenverifyingauserspassword,Serv-Uwilldothesame.Itparsesthesaltfromtheusersstoredpassword(ie."cb"inthiscase),prependsitthepasswordtheusersenttoitbytheclient,MD5hashesit,andcomparestheresultwiththestoredhash.Ifthevaluesareequal,thentheenteredpasswordiscorrect.
  加密的办法也就是随机天生两个字母,然后将字母和暗码举行拼接,再求它们的MD5值,最初将随机字母放在MD5值的后面即是加密后的暗码。
  接上去就能够依据以上的剖析编写程序来完成在线修正了。
1/**////<summary>
2///猎取指定字符串的MD5值
3///</summary>
4///<paramname="strContent"></param>
5///<returns></returns>
6publicStringMD5(StringstrContent)
7{
8System.Security.Cryptography.MD5md5=newSystem.Security.Cryptography.MD5CryptoServiceProvider();
9byte[]bytes=System.Text.Encoding.UTF8.GetBytes(strContent);
10bytes=md5.ComputeHash(bytes);
11md5.Clear();
12stringret="";
13for(inti=0;i<bytes.Length;i++)
14{
15ret+=Convert.ToString(bytes,16).PadLeft(2,0);
16}
17returnret.PadLeft(32,0).ToUpper();
18}
19
20
21/**////<summary>
22///天生任意字符串,字符串长度为2
23///</summary>
24///<returns></returns>
25publicstringGetRandomString()
26{
27stringstrReturn="";
28Randomran=newRandom();
29strReturn+=Convert.ToChar(ran.Next(26)+a).ToString();
30strReturn+=Convert.ToChar(ran.Next(26)+a).ToString();
31returnstrReturn;
32}
33
34//由指定的随机字母和登录暗码天生加密后的暗码
35publicstringCreateCryPassword(stringstrFrontChars,stringstrPassword)
36{
37returnstrFrontChars+MD5(strFrontChars+strPassword).ToUpper().Trim();
38}
39
40/**////<summary>
41///“修正暗码”的点击事务,在此事务中对暗码举行修正
42///</summary>
43///<paramname="sender"></param>
44///<paramname="e"></param>
45privatevoidbtnModifyPwd_Click(objectsender,System.EventArgse)
46{
47stringstrUserID=txtLoginID.Text;
48if(strUserID==String.Empty)
49{
50controlMessage.InnerHtml="用户名不克不及为空";
51return;
52}
53
54//判别两次暗码输出是不是不异
55if(txtNewPassword.Text!=txtConfirmPassword.Text)
56{
57controlMessage.InnerHtml="两次输出的暗码纷歧致,请从头输出";
58return;
59}
60
61IniFileini=newIniFile(_strServUDaemonPath);
62stringstrSectionValue="USER="+strUserID.Trim()+"|1";
63
64//经由过程读取指定用户的HomeDir来断定是不是存在该用户
65if(ini.ReadString(strSectionValue,"HomeDir","")=="")
66{
67controlMessage.InnerHtml="指定的用户不存在";
68return;
69}
70
71//入手下手判别暗码是不是准确
72stringstrPassword=ini.ReadString(strSectionValue,"Password","");
73
74stringstrPasswordFrontTwoChars;
75boolbPasswordRight=false;
76if(strPassword.Length>2)
77{
78//读取暗码中包括的随机字母
79strPasswordFrontTwoChars=strPassword.Substring(0,2);
80if(CreateCryPassword(strPasswordFrontTwoChars,txtOldPassword.Text)==strPassword)
81{//暗码切合
82bPasswordRight=true;
83}
84else
85{//暗码不符
86bPasswordRight=false;
87}
88}
89elseif(strPassword==txtOldPassword.Text)//原暗码为空
90{
91bPasswordRight=true;
92}
93else
94{
95bPasswordRight=false;
96}
97
98if(bPasswordRight)
99{
100//暗码准确,写进新的暗码,并设置主动加载新的设置,以便下一次变动时仍无效
101ini.WriteString(strSectionValue,"Password",CreateCryPassword(GetRandomString(),txtNewPassword.Text));
102controlMessage.InnerHtml="完成暗码修正";
103}
104else
105{
106controlMessage.InnerHtml="原暗码毛病";
107}
108
109}
  以上代码中的_strServUDaemonPath变量用于保留ServUDaemon.ini文件地点的路径,该值能够在PageLoad事务中经由过程Web.Config设置获得。
  但事变并没有就此停止。经由测试,发明在存在一个严峻的成绩:修正暗码后只要重启Serv-U才干使修正后的暗码失效。那不是即是没甚么用嘛,办理员总不成能没事老在那边重启服务器来使暗码修正失效吧。
  再次返来Serv-U的官方常识库,查到了以下一条内容:
ManuallyUpdatingtheServUDaemon.iniFile
WheneverchangesaremadedirectlytotheServUDaemon.inifile,addthefollowinglineundertheGlobalareaintheINIfile.
ReloadSettings=True
Serv-UregularlycheckstheINIfileforthissetting.Ifitispresent,Serv-Uwillrefreshallstoredsettingsforeverydomainontheserver.ThisallowsServ-Utorecognizethechangeswithouthavingtoberestarted.
AfterServ-Uloadsthechanges,itremovesthe"ReloadSettings=True"entry.Thisallowsyoutoenteritagainnexttimeanychangesaremade.
  也就是说,只需在INI文件的GLOBAL节增加键ReloadSettings并设置它的值为True即可以完成修正暗码后主动更新了。因而只需修正原代码,在101行和102行之间拔出以下一句代码便可:
ini.WriteString("GLOBAL","ReloadSettings","True");
  到这里,一个在线修正Serv-U暗码的网页就全体完成了。
  程序中的IniFile是一个封装了API对INI文件操纵的类,仅必要完成对字符串的读取和写进便可。
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)
小女巫 该用户已被删除
沙发
发表于 2015-1-27 21:08:41 | 只看该作者
那么,ASP.Net有哪些改进呢?
若天明 该用户已被删除
板凳
发表于 2015-2-5 11:41:45 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
简单生活 该用户已被删除
地板
发表于 2015-2-11 15:50:12 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
谁可相欹 该用户已被删除
5#
发表于 2015-3-2 15:43:46 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
6#
发表于 2015-3-11 04:28:49 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
若相依 该用户已被删除
7#
发表于 2015-3-17 20:41:38 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
小魔女 该用户已被删除
8#
发表于 2015-3-25 01:35:00 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表