登录方法及防止sql注入

登录查询语句最好不要用连接字符串查询,防止sql注入。1‘or’1‘=’1
string username="admin";
string password="123";
string str="连接字符串";
using(sqlconnection cnn=newsqlconnection(str))
{
  using(sqlcommand cmd=cnn.createcommand())
 {
  cmd.commandtext="select count(*) from login where username='"+username+"'and password='"+password+"'";
  int i=convert.toint32(cmd.executescalar());
  if(i>3)
  {
    console.write("yes");
  }
  else
  {
   console.write("no");
  }
 }
}

登录查询语句最好要用,防止sql注入。
string username="admin";
string password="123";
string str="连接字符串";
using(sqlconnection cnn=newsqlconnection(str))
{
  using(sqlcommand cmd=cnn.createcommand())
 {
  cmd.commandtext="select count(*) from login where username=@username and password=@password";
  cmd.parameters.add(new sqlparameter("username",username));
  cmd.parameters.add(new sqlparameter("password",password));
  int i=convert.toint32(cmd.executescalar());
  if(i>3)
  {
    console.write("yes");
  }
  else
  {
   console.write("no");
  }
 }
}

限制错误登录次数
private void incerrortimes()
{
  using(sqlconnection cnn2=newsqlconnection(str))
  {
    using(sqlcommand cmd2=cnn2.createcommand())
    {
      cmd2.commandtext="update login set errortimes=errortimes+1 where username=@username";
      cmd2.parameters.add(new sqlparameter("username",username));
      cmd2.executenonquery();
    }
  }
}
private void reseterrortimes()
{
  using(sqlconnection cnn2=newsqlconnection(str))
  {
    using(sqlcommand cmd2=cnn2.createcommand())
    {
      cmd2.commandtext="update login set errortimes=0 where username=@username";
      cmd2.parameters.add(new sqlparameter("username",username));
      cmd2.executenonquery();
    }
  }
}
using(sqlconnection cnn=newsqlconnection(str))
{
  using(sqlcommand cmd=cnn.createcommand())
  {
    cmd.commandtext="select * from login where username=@username";
    cmd.parameters.add(new sqlparameter("username",username));
    using(sqldatareader reader=cmd.executereader())
    {
      if(reader.read())
      {
        int errortimes=convert.toint32(read["errortimes"]);
        if(errortimes>3)
        {
          console.write("登录错误次数过多,禁止登录");
          return;
        }
        string dbpassword=read["password"];
        if(password=dbpassword)
        {
          console.write("登录成功");
          reseterrortimes()
        }
        else
        {
          console.write("登录失败");
          incerrortimes();
        }
      }
      else
      {
        console.write("用户名不存在");
      }
    }
  }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值