paip.提升安全性---登录密码出错次数检测
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.提升安全性---登录密码出错次数检测相关推荐
- Linux设置登录密码错误次数限制
1.备份相关文件 为了避免编辑出错,最好备份一下将要编辑的文件. cp /etc/pam.d/sshd /etc/pam.d/sshd.bak cp /etc/pam.d/login /etc/pam ...
- oracle12c密码登录失败,【译】解决Oracle12c Cloud Control登录验证出错问题
我是真的跟随这篇文章解决了我EM12C不能登录的问题.不是随便乱找一篇文章翻译的. 解决Oracle12c Cloud Control登录验证出错问题 前几天我试图登录我的EM12c R4环境与SSA ...
- Discuz1.5 密码错误次数过多,请 15 分钟后重新登录
Discuz1.5 密码错误次数过多,请 15 分钟后重新登录 Discuz X1.5修改方式: 打开 source/function/function_member.php文件, 修改第103行: ...
- vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
首次登录,使用默认用户密码登录vmware/vmware vmware vcenter orchestrator configuration提示"用户名密码错误或登录失败超过次数被锁定&qu ...
- 家庭路由器设置以及win10链接无线不显示登录密码 直接提示链接出错问题解决...
家庭路由器设置 网线插入WAN口,用网客户端接在LAN口,就是路由器模式 LAN→WAN设置: 电脑→第二个路由器LAN→进入设置界面: 网络参数→WAN口设置→WAN口连接类型→动态IP→保存. 网 ...
- 【Shiro】6、Shiro实现限制密码错误次数从而限制用户登录
我们的系统非常容易遭受攻击,被人暴力破解等,我们需要对同一账户密码错误次数进行统计,达到上限后,需要在一段时间内限制该用户登录,从而有效地保护账户密码的安全 1.重试限制散列凭据匹配器 package ...
- 华为服务器修改登录密码,如何修改服务器的登录密码
如何修改服务器的登录密码 内容精选 换一换 云服务器网络异常.防火墙未放行本地远程桌面端口.云服务器CPU负载过高等问题均可能导致云服务器无法正常登录.本节操作介绍无法登录Windows弹性云服务器的 ...
- SQLSERVER2005登录时出错
SQLSERVER2005登录时出错,这个问题我已经纠结好几天啦 用户"sa"登陆失败,SQL Server错误:18456 按照网上的资料设置了一下,果然好了. 处理步骤 1 用 ...
- 九种破解Xp登录密码方法
Windows XP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复Windows XP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼. 从&quo ...
- 忘记Windows XP登录密码的9种解决办法
http://school.cfan.com.cn/system/xp/password/2007-08-12/1186915005d94141.shtml 首先提议: 如果你是一个很容易遗忘的人,那 ...
最新文章
- 【Git】Git 标签使用 ( 查询哈希码 | 创建标签 git tag v1.0 | 查询标签 git tag | 查询标签信息 git show v1.0 | 创建标签并指定说明 | 删除标签 )
- Java中的输入输出流
- asp.net form submit 在Chrome里面看Form提交
- batocera_手把手教你安装batocera系统,把旧电脑变成万能影音游戏主机
- Python——assert(断言函数)
- 博途中用的是c吗_一只“66 鸭”离奇出走,只为助蛋宝宝C位出道
- C/C++信息隐写术(四)之大程序藏入BMP文件
- 你必须知道的C#的25个基础概念(附演示)
- java冒泡怎么写_java 冒泡 又一种写法
- Android自己写的三款实用开关控件
- Oracle 11g服务器安装详细步骤——图文教程
- 新消费万字之辩 | “疯狗浪”时代来临,品牌如何结构性增长?
- Hadoop大数据环境搭建保姆级教程(完整版)
- 第一行代码(Android)第二版PDF和源码
- 路由器当ap用虚拟服务器不能用,解决用TPLINK路由器配置模拟AP时Internet连接共享是空白的问题...
- 腾讯bugly热更新接入
- 估值调整 - 时间调整
- tosmana使用教程_20款最流行的免费定性数据分析工具
- 判断apk是否加固或混淆,Python + dex2jar-2.0实现方法
- GVINS文章暴力翻译(仅供自学)