设为首页 收藏本站
查看: 1123|回复: 0

[原]ASP.NET中修改ServU FTP(ODBC,MySQL)密码

[复制链接]

尚未签到

发表于 2015-5-29 11:53:05 | 显示全部楼层 |阅读模式
1. 为ServU FTP配置了ODBC数据源,后台数据库使用MySQL,配置方法不详述。

2. 在ASP.NET中,修改用户密码。
  很简陋的页面,主要靠拖控件完成:
DSC0000.png
  修改按钮的单击事件为:

protected void ButtonChangePass_Click(object sender, EventArgs e)
{
string user = TextBoxUsername.Text;//用户名
string oldPass = TextBoxPrePass.Text;//原密码
string newPass = TextBoxNewPass.Text;//新密码
string newPassRe = TextBoxReNewPass.Text;//重复新密码
string resultText = "";
divResult.Visible = true;
if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(oldPass) && !string.IsNullOrEmpty(newPass) && !string.IsNullOrEmpty(newPassRe) && newPass == newPassRe)
{
if (CheckPassByUser(user, oldPass))
{
if (ChangePass(user, oldPass, newPass)) resultText = "修改成功!请重新登录!";
else resultText = "修改失败,请重试!";
}
else resultText = "用户名或密码错误!请重试!";
}
else resultText = "输入错误,请重试!";
LabelResult.Text = resultText;
}
  其中引用到的CheckPassByUser方法为检查用户名、原密码是否匹配:

///
/// 检查用户名密码是否匹配
///
/// 用户名
/// 密码
/// 匹配?
private bool CheckPassByUser(string user, string pass)
{
string txtSQL = string.Format("SELECT PASSWORD FROM servudb.useraccounts  WHERE NAME='{0}'", user);
object o = MySQLHelper.GetSingle(txtSQL);
if (o != null)
{
string dbPass = (string)o;
if (dbPass.Length > 32)
{
char a, b;
a = dbPass[0];
b = dbPass[1];
string password = string.Format("{0}{1}{2}", a, b, pass);
password = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
password = string.Format("{0}{1}{2}", a, b, password.ToUpper());
if (dbPass == password) return true;
}
}
return false;
}
  GenNewPass生成数据库中存储的密码散列值,ServU默认的散列算法为pass=a+b+MD5(a+b+pass),其中a、b为两个随机英文字母:

///
/// 生成用于存储的ServU密码散列值
/// ServU密码规则:pass=a+b+MD5(a+b+pass),ab为随机英文字母
///
/// 密码
/// 密码散列值
private string GenNewPass(string pass)
{
Random rnm = new Random();
char a = (char)(rnm.Next(97, 123));//随机字母a
char b = (char)(rnm.Next(97, 123));//随机字母b
string password = string.Format("{0}{1}{2}", a, b, pass);
password = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
password = string.Format("{0}{1}{2}", a, b, password.ToUpper());
return password;
}
  修改密码操作就很简单了,直接update数据库:

///
/// 修改密码
///
/// 用户名
/// 老密码
/// 新密码
/// 是否成功
private bool ChangePass(string user, string oldPass, string newPass)
{
string txtSQL = string.Format("UPDATE servudb.useraccounts SET PASSWORD = '{0}' WHERE NAME = '{1}';", GenNewPass(newPass), user);
if (MySQLHelper.ExecuteSql(txtSQL) > 0) return true;
return false;
}
3. 测试,成功!

4. 关于ServU的默认密码算法
  MD5散列,应该还是安全的,虽然现在有专门的MD5查询网站(原来免费的,现在发展会员,开始收费了)…即是用户使用纯数字密码,经处理,实际变成了字母数字混合的密码,且ServU存储在数据库里的密码不是简单的数字密码散列值,在一定程度上增加了破解难度,但随机字母只有两个,且顺序固定,在前两位,也为暴力破解(包括字典)开了一小扇方便之门。总之强度不高。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71889-1-1.html 上篇帖子: 再谈FTP API与总结 下篇帖子: 【Linux】Vsftp配置ftp服务以及Quota配置磁盘限额
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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