香港虚拟主机
本站公告
新闻资讯
虚拟主机帮助
域名帮助
服务器帮助
邮箱帮助
建站帮助
网站推广帮助
VPS帮助
特色主机帮助
网站备案专题
会员帮助信息
代理帮助信息
成功案例
在ASP中使用存储过程
您现在的位置: 江南数联 >> 帮助中心 >> 建站帮助 >> 正文

也谈ASP技术实现站点加密

  作者:admin    来源:本站原创    点击次数:29     更新时间:2009-6-7 6:22:36  
     
 
关注石头有礼
 
 

也谈ASP技术实现站点加密

本报去年第95期上有一篇名为“用ASP技术为你的站点加密”的文章,其中提出的登录方法存在安全隐患,如果真的使用这种方法来作为重要的站点的数据验证,任何一个懂得SQL语法和ASP的人都可以轻而易举地登录进入这个站点而不必知道什么用户名或者密码。

  文中所给出的数据验证代码是通过“SELECT * FROM customer WHERE cust_id=′ ″ & request(″uid″) & ″ ′ and ′cust_pwd=′ ″ & request(″pwd″) & ″ ′ ″,并且判断此SQL语句返回的记录集是否为空来确定登录是否失败。其问题出在没有对收集到的uid信息和pwd信息进行任何预处理,从而使得用户可以在输入用户名和密码的时候使用“'”这个SQL的分隔符号,因此用户可以构造出这样的用户名和密码:uid=″ABC′ or ′1′=′1″,pwd=″ABC′ or ′1′=′1″。然后文中的数据验证部分会生成这样的一个SELECT语句并交由SQL Server执行:″SELECT * FROM customer WHERE cust_id=′ABC′ or ′1′=′1′ and cust_pwd=′ABC′ or ′1′=1′ ″。其返回的结果跟直接使用“SELECT * FROM customer”完全一样,返回全部的用户记录,所以后面的gbFound就会成为True,然后文中的系统会取出rsCust.Fileds(“cust_id”)和rsCust.Fileds(“cust_pwd”)存入Session变量中,也就是说取出了全部用户记录中的第一个用户的信息存入Session。至此,咱们这个没有任何授权的用户就已经取得了跟第一名合法用户完全相同的身份了。

  一个真正可靠的ASP验证页面应该拥有数据预处理部分和多数据结果的补充验证,下面给出一个可靠的ASP验证代码:

  〈%@ Language=VBScript%〉

  〈%

    Dim myDSN

    dim na,pass

    ′下面是连接代码

    MyDSN = ″DSN=HotFoxDB;uid=superuser;DATABASE=HotFoxDB;pwd=″

    ′取得用户提交的用户名和密码

    na=trim(request.form(″name″))

    pass=trim(request.form(″password″))

    ′数据预处理,检测输入中是否存在 ′ 符号

    if (instr(na,″ ′ ″)〈〉0 or instr(pass,″ ′ ″)〈〉0) then

   ′如果有非法字符,转到登录失败页面

    Response.Redirect(″LogFail.HTM″)

    end if

    ′执行常规的SQL数据验证

    mySQL=″select * from userprofile where name=′ ″ & na & ″ ′ and pwd=′ ″ & pass & ″ ′ ″

    set rstmp = Server.CreateObject(″ADODB.Recordset″)

    rstmp.Open mySQL,myDSN,3

    ′检测是否返回多个数据记录

    if rstmp.recordcount〈〉1 then

        ′如果符合条件的记录不止一个,转到登录失败页面

     Response.Redirect(″LogFail.HTM″)

    else

       ′成功登录的处理部分

        session(″username″)=trim(rstmp.fields(″name″))

        session(″userdomain″)=trim(rstmp.fields(″domain″))

        session(″useraction″)=trim(rstmp.fields(″action″))

        rstmp.Close()

        set rstmp=nothing

       Response.Redirect(″Main.HTM″)

    end if

  %〉

  另外前文作者提出的在每个页面开头使用那段代码来验证的方法,最好应该改为使用INCLUDE,从而加快处理速度,并避免每个页面的头部过于冗长。具体方法是将那段代码单独存为一个Certify.ASP,然后每个页面开头加入〈!--#INCLUDE FILE=″Certify.ASP″--〉就可以了。

本章关健词:江南数联 域名注册 海外虚拟主机 G享虚拟主机 国内虚拟主机 企业邮箱 网站建设 自助建站 400电话申请 微聚商

 
  版权申请:也谈ASP技术实现站点加密出自江南数联dns06.com未经授权请勿转载!  
 
  • 上一篇帮助:

  • 下一篇帮助:
  •  
         

    扫一扫关注公众号有礼
    Copyright@2004-2015 江南数联 版权所有未经授权请勿复制!
    《中华人民共和国增值电信业务经营许可证》ISP证编号:皖B2-20080036 湘B2-20160056
    公司全称:永州石头网络技术有限公司(运营部)
    地址: 中国·湖南省永州市育才路158号 服务热线:400 616 9260
    安徽公司:安徽仁科信息技术有限公司 地址:合肥万和新城广场A-608 
    关注词:网站空间虚拟空间空间域名域名空间域名主机网站空间哪家好网站空间多少钱