网站认证码的设计方案

原作者: 博客园一条辉 原文: 链接  

网站认证码的设计

目的:

目前网站认证码,存在缺陷,认证码是存放在Cookie中,存在极大的安全隐患,而且同个浏览器同时打开两个有认证码的页面,后打开的页面上的认证码,会覆盖掉前一个的认证码,。这次要设计一个稳定安全、可扩展和性能较高的认证码系统。

接口定义

前台脚本

 

1GetRenZhengHtml()

返回Html脚本,包括一个隐含的Input和一个图片链接,图片有Java的Servlet生成。

例如:

       <input type=”hidden” name=”renzid” id=”renzid” value=”随机生成的16位字符串”>

       <img οnclick=”ReIntiRenZheng(this)” src=” servlet/RandImageServlet?id=随机生成的16位字符串”>

2ReIntiRenZheng(theImg)

重新生成随机字符串,设置认证码和图片链接

一般用法:

<form ...>

<input ....>

...

<script>document.write(GetRenZhengHTML())</script>

...

</form>

后台检查认证码接口Java

类:com.cnblogs.renzhengcode.CheckRenZhengCode

Public static boolean check( renzhengidrenzcode)

验证认证码是否正确,

正确,返回true;否则,返回false

Renzhengid : 系统生成的随机16位十六进制数字认证ID

Renzcode:用户根据图片上的字符输入的认证码

实现细节

 
基本实现流程图

数据库名称RenZhengDB

表结构

字段名

名称

类型

说明

RZID

16位随机字符串

Varchar2(16)

作为钥匙匹配

RZCode

认证码

Varchar2(4)

用户输入

GENDATE

生成时间

Datatime

用于清除过期认证码

无主键,但是RZID需建立索引

存储过程

P_CreateRenZhengCode @RenZhengID char(16) @RenZhengCode char(4)

功能:直接插入一条记录,createTime为当前时间。

参数: @RenZhengID 随机产生的16位字符串

              @RenZhengCode 4位认证码

P_CheckRenZhengCode @RenZhengID char(16) @RenZhengCode char(4)

功能:根据输入的参数,查找符合的记录,有,返回1,并且删除该记录;没有,则返回0

参数:@RenZhengID 随机产生的16位字符串

              @RenZhengCode 4位认证码

返回:

如果1,则通过认证码的验证

否则 0,认证出错

数据库定时清除过期认证码的Job

初步定为,每过10分钟清一次10分钟之前的认证记录。

P_ClearOverdueRenZhengCode

参数:无

Job调用。

转载于:https://www.cnblogs.com/liunx/archive/2008/04/01/1133300.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值