• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    安全校验Session验证码并避免绕开验证码攻击
    已经记不得是在哪个网站上看到的了,一般情况下对于验证码的校验,大家很容易写成下面这样:
    复制代码 代码如下:

    %
    If Request.Form("SecurityCode") = Session("SecurityCode") Then
    ' TODO : Database operations
    Else
    Response.Write "Security code incorrect!"
    End If
    %>

    验证码图片产生Session("SecurityCode")并保存正确的验证码值,然后获得用户提交的验证码值,然后两个一比对如果一样则表示验证码正确,否则验证码错误。表面上这样的算法没有什么问题,但是对于一种特殊情况则会让验证码形同虚设。
    首先我们知道,对于上面的算法有个核心的地方就是我们要访问产生验证码图片的那个文件才会有个保存验证码值的Session,然后才能对用户的输入进行正确的比对,假如有心人构造一个绕开验证码图片文件的Form然后进行提交会得到什么呢?Session("SecurityCode")不存在为空,如果此时用户验证码什么都不输入,这时验证码校验就形同虚设了。好,这里利用漏洞攻击的关键就是验证码的Session,我们很容易就能够让服务器不产生这个Session从而使这样的攻击变成可能。
    解决的方法也很容易,校验验证码的Session是否为空或者校验用户输入的验证码是否合法,构造安全表单的关键就是永远不要相信用户的输入。下面采用校验验证码Session和用户输入的双保险办法解决这个安全问题:
    复制代码 代码如下:

    ' str为要校验的验证码,len为验证码长度
    Function IsSecurityCodeValid(str, len)
    IsSecurityCodeValid = Not CBool( _
    IsEmpty(str) Or CStr(str)="" Or Len(str)len)
    End Function
    If IsSecurityCodeValid(Request.Form("SecurityCode"), 4) AND _
    IsSecurityCodeValid(Session("SecurityCode"), 4) AND _
    Request.Form("SecurityCode") = Session("SecurityCode") Then
    ' TODO : Database operations
    Else
    Response.Write "Security code incorrect!"
    End If
    您可能感兴趣的文章:
    • CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
    • PHP 用session与gd库实现简单验证码生成与验证的类方法
    • PHP+jQuery 注册模块的改进(一):验证码存入SESSION
    • JSP动态生成验证码存储在session作用范围内
    • 通过Session案例分析一次性验证码登录
    上一篇:UTF-8 GBK UTF8 GB2312 之间的区别和关系介绍
    下一篇:比较全的获得ip地理信息的几种方法小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    安全校验Session验证码并避免绕开验证码攻击 安全,校验,Session,验证,码,