登录验证问题(顶就有分)

threejek 2008-11-17 08:02:50
初学者
自己写的登录验证 代码如下,这样有什么不好,为什么我看别人验证代码都写很复杂呢?
你有最好最实用的验证,也别忘记告诉我。送你高分哦
 
string username = txt_username.Text;
string password = txt_password.Text;
SqlConnection conn = view.createCon();
conn.Open();
string sql = "select count(*) from Admin where Admin='" + username + "'and AdminPwd='" + password + "'";
SqlCommand cmd = new SqlCommand(sql, conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count == 0)
{
Response.Write("用户名密码不对");
}
else
{
Response.Redirect("Admin_Main.aspx");
Session["login"] = "ok";
}
conn.Close();

...全文
330 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicbacon 2008-11-18
  • 打赏
  • 举报
回复
up
yiwei8600926 2008-11-18
  • 打赏
  • 举报
回复
超顶
5Br 2008-11-18
  • 打赏
  • 举报
回复
up
yefengzhixia 2008-11-18
  • 打赏
  • 举报
回复
利用sql的prameters[] 来减少验证的方面 增加安全的问题
tian_fang 2008-11-18
  • 打赏
  • 举报
回复
学习
yegushui 2008-11-18
  • 打赏
  • 举报
回复
帮顶一下,顺便学习了
iloveaspnet2008 2008-11-18
  • 打赏
  • 举报
回复
顶! 回帖是一种美德!传说每天回帖即可获得 10 分可用分![color=#FF0000][/color]
takako_mu 2008-11-18
  • 打赏
  • 举报
回复
用存储过程,SQL用exist吧。
threejek 2008-11-18
  • 打赏
  • 举报
回复
可以结贴了
kingcsx666 2008-11-18
  • 打赏
  • 举报
回复
登录都差不多,注意安全就可以了
wgp198313 2008-11-18
  • 打赏
  • 举报
回复
学习了..
Heaven_feather 2008-11-18
  • 打赏
  • 举报
回复
..楼上都说干净了,...帮顶吧
CodeShow 2008-11-18
  • 打赏
  • 举报
回复
搜索一个存储过程做为登陆比较好的
CODE163 2008-11-18
  • 打赏
  • 举报
回复
请使用存储过程 如果一定要用SQL语句 那就用参数集传参数 不要使用COUNT(*)
编程有钱人了 2008-11-18
  • 打赏
  • 举报
回复

学些
  • 打赏
  • 举报
回复
Response.Redirect("Admin_Main.aspx");
Session["login"] = "ok";

执行不到 Session["login"] = "ok";
  • 打赏
  • 举报
回复
主要是安全与代码封装
threejek 2008-11-18
  • 打赏
  • 举报
回复
学习学习。天天都有进步。哈哈
yoursWTR 2008-11-18
  • 打赏
  • 举报
回复 1
没安全性,
1. 没防注入功能(你该考虑到用户提交的信息是否有非法字段)
2. 没密码保护机制(你该考虑到对用户的信息保密)
3. 没CAPTCHA测试(你该区分是人类还是电脑在对此页面登录)
4. 没恶意猜测屏蔽(你该对那些恶心猜密码的东西进行屏蔽)

没性能
1. 没防刷新功能(你该考虑到用户在等得不耐烦的时候连续的提交)
2. SQL语句性能低下(你该使用诸如 "select top 1 id from Admin where Admin='" + username + "'and AdminPwd='" + password + "'"; 而不是去COUNT() 进行运算)
3. 执行语句性能低下(你该使用ExecuteReader() 而不是 ExecuteScalar(),ExecuteScalar()性能其实比ExecuteReader()差, )
4. 判断有问题(你该通过SqlDataReader.HasRows判断存在,而不是去读出数据结果来判断)
5. 保证不用的对象立即释放资源(你可以同过using()也可以手动销毁)
6. 不要使用Session(Session相当耗性能,你可以使用COOKIE,viewstats之类的)

没稳定性
1.不要使用Session(Session相当不稳定,而且难以管理,你可以使用COOKIE,viewstats之类的)


linuxlsx 2008-11-18
  • 打赏
  • 举报
回复
顶一下
加载更多回复(30)

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧