您的位置:寻梦网首页编程乐园ASP编程>用ASP+ACCESS制作附加码验证
ASP世界
用ASP+ACCESS制作附加码验证
作者:易木计算机网络工作室  转自:http://www.lanx.cn/
  我对安全方面还是比较关注的,我以前做4位数的附加码,做了10000张图片!由于不好管理,而且这样的小文件每个文件占用的空间比实际大小大得多(这就是一个文件至少要占用一个簇,例如一个图片是700字节,硬要占用4K字节,划不来)。
  现在好了,我想到了新技术,而且已经实现了,并且有很好的防某些读取图片附加码软件的功效。
  是怎样实现的呢??其实就是把附加码的图片存进数据库。那么有人会问哒,10000张图片好难做啊!确实,可是我有网页里面做图片的组件啊,用一个循环就行了,而且我已经做好了,可以点击下面的“访问/下载”下载到。
  下面,将各个文件的代码写一下:
  显示时使用如下语句:
  <SCRIPT language=javascript>
  document.write("<img src=addnum1.asp?id=!!!&random=",Math.random()," width=36 height=12 border=0 alt=’请在左边的框中输入此数字&#10如果无法显示,请刷新本页&#10附加码是为了避免有不良用户使用程序猜测用户密码,特提供密码保护附加码,为用户提供更安全的服务。&#10不用记附加码,附加码只对当次服务有效,附加码的有效期为15分钟。’>")
  </SCRIPT>
  显示附加码使用javascript,其理由是每次打开页面都能更改随机数,以便浏览器能再次从服务器获取新的附加码图片,以免出现服务器记录的附加码改变,而客户端显示图片未变(这里感谢腾讯公司使我感到启发)
  addnum1.asp:
  <%
  Response.Expires = 0
  Response.Buffer = TRUE
  Response.ContentType = "image/jpeg"
  number1=year(date)+month(date)+day(date)+hour(time)+minute(time)+second(time)
  number2=(number1 * number1 + 1) * request("random")+number1
  session("addnum" & request("id"))=right(number2,4)
  set conn=Server.CreateObject("ADODB.Connection")
  conn.open "driver={Microsoft access Driver (*.mdb)};dbq=" & Server.MapPath("addnum.mdb")
  set show=conn.Execute("Select top 1 image from image where id=’" & session("addnum" & request("id")) & "’")
  Response.BinaryWrite show("image")
  show.close
  set show=nothing
  conn.close
  set conn=nothing
  Response.end
  %>
  最后就是addnum.mdb了
  验证时还是使用如下语句
  <%
  if request("addnum!!!")<>session("addnum!!!") or session("addnum!!!")="" then
  session("addnum!!!")=""
  %>
  验证失败后的页面显示
  <%else%>
  验证成功后继续其他验证
  <%end if%>
  注意,以上蓝色部分!!!显示字符不同,即可在同一页面同时使用多个附加码(多表单页面)