阅读文章

网站认证码的设计

[日期:2008-04-03] 来源:  作者: [字体: ]

     目的:
  目前网站认证码,存在缺陷,认证码是存放在Cookie中,存在极大的安全隐患,而且同个浏览器同时打开两个有认证码的页面,后打开的页面上的认证码,会覆盖掉前一个的认证码,。这次要设计一个稳定安全、可扩展和性能较高的认证码系统。
  
  接口定义
  前台脚本
  
  
  
  1、GetRenZhengHTML()
  
  返回HTML脚本,包括一个隐含的Input和一个图片链接,图片有Java的Servlet生成。
  
  例如:
  
   <input type=”hidden” name=”renzid” id=”renzid” value=”随机生成的16位字符串”>
  
   <img onclick=”ReIntiRenZheng(this)” src=http://www.aspcool.com/lanmu/” servlet/RandImageServlet?id=随机生成的16位字符串”>
  
  2、ReIntiRenZheng(theImg)
  
  重新生成随机字符串,设置认证码和图片链接
  
  一般用法:
  
  <form ...>
  
  <input ....>
  
  ...
  
  <script>document.write(GetRenZhengHTML())</script>
  
  ...
  
  </form>
  
  后台检查认证码接口Java
  
  类:com.cnblogs.renzhengcode.CheckRenZhengCode
  
  Public static boolean check( renzhengid,renzcode)
  
  验证认证码是否正确,
  
  正确,返回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调用。
  
    


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:使用WCF上传文件
下一篇:微软收购SpringSource公司
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款