paip.提升安全性---登录密码出错次数检测

前言... 1

设计接口... 1

流程设计(伪码)... 1

使用此接口... 2

实现接口... 3

前言

为了提升安全性,需要对登录时,密码出错次数进行检测,当达到一定次数时,如20次,禁止用户当日进行登录。。提示用户可通过取回密码功能,来重设密码

设计接口

public interface Iapts

//检测

void check(string Account);

//保存本次登录纪录..如果登录TRUE,则清零

void save(string Account, bool IsValid);

}

流程设计(伪码)

***check(username)

if (getTimes(username,today) >= getMaxTimes())

throw ("E1:今日登录连续错误次数超过" + getMaxTimes().ToString() + "次,请明日再试或者使用找回密码功能");

getTimes()

sql: select times from table where  username=xxx and date=today

***************************88

//保存本次登录纪录..如果登录TRUE,则清零

public void save(string Account, bool IsLoginValid)

if (IsLoginValid)

clear(Account);

else

add(Account);       // err times add 1

clear()

recorde=get(username,today)

rec.times=0;

add()

if (!exist(uname,doday))

new rec(username,times=1,date=today)

else

update time+1 where username and date=today

使用此接口

1.  登录时

Iapts apts = kaziApts.getIaptsImp();

//ati L97 add atipwdtimesSec

apts.check(Account);

L97

loginxxx,set tokeyn()

//ati L97 add atipwdtimesSec

apts.save(Account, IsValid);

L97

2.取回密码时

Iapts apts = atim.getbackpwdItfs.getapts();

//ati L96 apts add     clear

if (apts != null)

apts.save(uname, true);

实现接口

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using Maticsoft;

using System.Data.SqlClient;

using System.Data;

/// <summary>

///iaptsimp 的摘要说明

/// </summary>

public class iaptsimp    :Iapts

{

public iaptsimp()

{

//

//TODO: 在此处添加构造函数逻辑

//

}

void add(string uname)

{

inidb();

if (!exist(uname))

{

Maticsoft.aptsBO o = new aptsBO();

o.uname = uname;

o.times = 1;

o.date = DateTime.Now;

o.Add();

return;

}

int id = getid(uname);

string strSql = "update apts set times=times+1 where uname=@u and id="+id.ToString();

SqlParameter[] parameters = {

new SqlParameter("@u", uname)};

MOLE.SQL.ExecuteSql(strSql.ToString(), parameters);

}

int getid(string uname)

{

string date = getNowDate();

string date1 = "'" + date + " 00:00:01'";

string date2 = "'" + date + " 23:59:59'";

string anddate = " and [date]>=" + date1 + " and [date]<=" + date2;

string strSql = "select * from apts   where uname=@u" + anddate;

SqlParameter[] parameters = {

new SqlParameter("@u", uname)};

DataTable d = MOLE.SQL.GetDataTable(strSql.ToString(), parameters);

string idstr = d.Rows[0]["id"].ToString();

return Int32.Parse(idstr);

}

private bool exist(string uname)

{

string date = getNowDate();

string date1 = "'" + date + " 00:00:01'";

string date2 = "'" + date + " 23:59:59'";

string anddate = " and [date]>=" + date1 + " and [date]<=" + date2;

string strSql = "select * from apts   where uname=@u" + anddate;

SqlParameter[] parameters = {

new SqlParameter("@u", uname)};

DataTable d = MOLE.SQL.GetDataTable(strSql.ToString(), parameters);

if (d.Rows.Count == 0)

return false;

else

return true;

}

string getNowDate()

{

DateTime dt = DateTime.Now;

string s = string.Format("{0:yyyy-MM-dd}", dt);

return s;

}

int getTimes(string uname)

{

inidb();

string date = getNowDate();

string date1 = "'"+date + " 00:00:01'";

string date2 = "'" + date + " 23:59:59'";

string anddate = " and [date]>=" + date1 + " and [date]<=" + date2;

string strSql = "select * from apts   where uname=@u  " + anddate;

SqlParameter[] parameters = {

new SqlParameter("@u", uname)};

DataTable d = MOLE.SQL.GetDataTable(strSql.ToString(), parameters);

if (d.Rows.Count == 0)

return 0;

string s = d.Rows[0]["times"].ToString();

return Int32.Parse(s);

}

int getMaxTimes()

{

return 3;

}

void inidb()

{

MOLE.SQL.connectionString = new SqlHelper().ConnStr;

Maticsoft.DBUtility.DbHelperSQL.connectionString = MOLE.SQL.connectionString;

}

void clear(string uname)

{

inidb();

int id = getid(uname);

string strSql = "update apts set times=0 where uname=@u and id=" + id.ToString();

SqlParameter[] parameters = {

new SqlParameter("@u", uname)};

MOLE.SQL.ExecuteSql(strSql.ToString(), parameters);

}

public void save(string Account, bool IsLoginValid)

{

if (IsLoginValid)

{

clear(Account);

}

else

{

add(Account);       // err times add 1

}

}

public void check(string Account)

{

if (getTimes(Account) >= getMaxTimes())

throw new Exception("E1:今日登录连续错误次数超过" + getMaxTimes().ToString() + "次,请明日再试或者使用找回密码功能");

}

}

paip.提升安全性---登录密码出错次数检测相关推荐

  1. Linux设置登录密码错误次数限制

    1.备份相关文件 为了避免编辑出错,最好备份一下将要编辑的文件. cp /etc/pam.d/sshd /etc/pam.d/sshd.bak cp /etc/pam.d/login /etc/pam ...

  2. oracle12c密码登录失败,【译】解决Oracle12c Cloud Control登录验证出错问题

    我是真的跟随这篇文章解决了我EM12C不能登录的问题.不是随便乱找一篇文章翻译的. 解决Oracle12c Cloud Control登录验证出错问题 前几天我试图登录我的EM12c R4环境与SSA ...

  3. Discuz1.5 密码错误次数过多,请 15 分钟后重新登录

    Discuz1.5 密码错误次数过多,请 15 分钟后重新登录 Discuz X1.5修改方式: 打开 source/function/function_member.php文件, 修改第103行: ...

  4. vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...

    首次登录,使用默认用户密码登录vmware/vmware vmware vcenter orchestrator configuration提示"用户名密码错误或登录失败超过次数被锁定&qu ...

  5. 家庭路由器设置以及win10链接无线不显示登录密码 直接提示链接出错问题解决...

    家庭路由器设置 网线插入WAN口,用网客户端接在LAN口,就是路由器模式 LAN→WAN设置: 电脑→第二个路由器LAN→进入设置界面: 网络参数→WAN口设置→WAN口连接类型→动态IP→保存. 网 ...

  6. 【Shiro】6、Shiro实现限制密码错误次数从而限制用户登录

    我们的系统非常容易遭受攻击,被人暴力破解等,我们需要对同一账户密码错误次数进行统计,达到上限后,需要在一段时间内限制该用户登录,从而有效地保护账户密码的安全 1.重试限制散列凭据匹配器 package ...

  7. 华为服务器修改登录密码,如何修改服务器的登录密码

    如何修改服务器的登录密码 内容精选 换一换 云服务器网络异常.防火墙未放行本地远程桌面端口.云服务器CPU负载过高等问题均可能导致云服务器无法正常登录.本节操作介绍无法登录Windows弹性云服务器的 ...

  8. SQLSERVER2005登录时出错

    SQLSERVER2005登录时出错,这个问题我已经纠结好几天啦 用户"sa"登陆失败,SQL Server错误:18456 按照网上的资料设置了一下,果然好了. 处理步骤 1 用 ...

  9. 九种破解Xp登录密码方法

    Windows XP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复Windows XP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼. 从&quo ...

  10. 忘记Windows XP登录密码的9种解决办法

    http://school.cfan.com.cn/system/xp/password/2007-08-12/1186915005d94141.shtml 首先提议: 如果你是一个很容易遗忘的人,那 ...

最新文章

  1. 【Git】Git 标签使用 ( 查询哈希码 | 创建标签 git tag v1.0 | 查询标签 git tag | 查询标签信息 git show v1.0 | 创建标签并指定说明 | 删除标签 )
  2. Java中的输入输出流
  3. asp.net form submit 在Chrome里面看Form提交
  4. batocera_手把手教你安装batocera系统,把旧电脑变成万能影音游戏主机
  5. Python——assert(断言函数)
  6. 博途中用的是c吗_一只“66 鸭”离奇出走,只为助蛋宝宝C位出道
  7. C/C++信息隐写术(四)之大程序藏入BMP文件
  8. 你必须知道的C#的25个基础概念(附演示)
  9. java冒泡怎么写_java 冒泡 又一种写法
  10. Android自己写的三款实用开关控件
  11. Oracle 11g服务器安装详细步骤——图文教程
  12. 新消费万字之辩 | “疯狗浪”时代来临,品牌如何结构性增长?
  13. Hadoop大数据环境搭建保姆级教程(完整版)
  14. 第一行代码(Android)第二版PDF和源码
  15. 路由器当ap用虚拟服务器不能用,解决用TPLINK路由器配置模拟AP时Internet连接共享是空白的问题...
  16. 腾讯bugly热更新接入
  17. 估值调整 - 时间调整
  18. tosmana使用教程_20款最流行的免费定性数据分析工具
  19. 判断apk是否加固或混淆,Python + dex2jar-2.0实现方法
  20. GVINS文章暴力翻译(仅供自学)

热门文章

  1. Spring Security 11 种过滤器介绍
  2. MySQL MYISAM引擎表锁和行锁详解
  3. SQL Server 常用高级语法笔记
  4. adb 模拟器安装apk
  5. apache和nginx互切同时都支持fastcgi
  6. cownew开源-cownewStudio抢先预览
  7. hdu 二分图最大匹配问题 (hdu 1083)
  8. for in和for of的区别(转)
  9. HTML与css语法笔记
  10. [模板]线性筛素数(欧拉筛法)