zoukankan      html  css  js  c++  java
  • 由“ASP.NET网站限制访问频率”想到的两点问题

    “ASP.NET网站限制访问频率”的作者遇到了两大问题。一是验证码被破解,二是恶意用户通过使用代理变换IP来摆脱作者的限制。

    先说说验证码破解
    提起来破解验证码,小菜们肯定都直摇头,觉得那是图形学和算法高手们研究的事情,小菜们只能心有余而力不足。
    然而博主使用的验证码其实很容易破掉。打开博主的网站http://freesms.cloudapp.net/Default.aspx,在图片验证码上点击右键然后选择“属性”,可以看到验证码的地址“http://freesms.cloudapp.net/VerifyCode.aspx?”。很奇怪吧,咋地是个aspx页面那!别着急,打开一个浏览器按shift+F2调出httpwatch(很有用的第三方IE插件,请自行获取安装。),点急record打开监控。下面把刚才获取的验证码地址粘贴到地址栏里并按回车访问他。下面是httpwatch抓到的部分返回结果:
    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Type: image/Jpeg; charset=utf-8
    Server: Microsoft-IIS/7.0
    X-AspNet-Version: 2.0.50727
    Set-Cookie: 1945.47704561149=IDNH6; path=/
    X-Powered-By: ASP.NET
    Date: Sat, 19 Sep 2009 14:28:58 GMT
    Content-Length: 8697
    请注意这一行“Set-Cookie: 1945.47704561149=IDNH6; path=/”再看看ie里的显示
    如下图

    诸位看官应该明白怎么回事了吧。VerifyCode.aspx的任务很简单,随意生成一组字母如“IDNH6”然后把它变成图像输出到客户的,并把这组字母以明文的形式保存到cookie里,以便用户提交请求时从cookie中读取并与用户提交的结果进行比较。
    要想破解只要在提交post请求时在http头里伪造一个假的cookie值即可。因为校验程序只要确认用户填写的验证码和cookie里的那个(可以伪造)相同就放行。

    再谈谈第二个问题“恶意用户通过使用代理变换IP来摆脱作者的限制”。
    所谓使用代理来变换IP对大部分asp.net网站其实不需要挂代理就能实现IP的欺骗。
    先看一段网上广为流传的获取用户真实IP的实现代码

    #region 获取用户真实IP地址
            /// <summary>
            /// 获取用户真实IP地址
            /// </summary>
            /// <returns>返回用户真实IP</returns>
            public static string GetUserRealrIp()
            {
                string user_IP = "";

                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                {
                    user_IP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                }
                else
                {
                    user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                }
                return user_IP;  
            }
            #endregion
    下面演示一下如何伪造一个虚假的访问IP
    不多介绍,直接上代码
    制造虚假IP的客户的:

    Code

    getip.aspx

    Code


    下面是运行结果:


    如何避免这种地址获取机制的缺陷,还是请大家各抒己见吧。

  • 相关阅读:
    51 Nod 1068 Bash游戏v3
    51 Nod Bash 游戏v2
    51 Nod 1073 约瑟夫环
    UVA 12063 Zeros and ones 一道需要好好体会的好题
    51 Nod 1161 Partial sums
    2018中国大学生程序设计竞赛
    UVA 11971 Polygon
    UVA 10900 So do you want to be a 2^n-aire?
    UVA 11346 Possibility
    python with as 的用法
  • 原文地址:https://www.cnblogs.com/wangwei/p/1570242.html
Copyright © 2011-2022 走看看