转自:http://www.cnblogs.com/wangwei/archive/2009/09/19/1570242.html
“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
static void Main(string[] args)
        {
            System.Net.WebClient wc = new System.Net.WebClient();
            wc.Headers.Add("VIA", "8.8.8.8");
            wc.Headers.Add("X_FORWARDED_FOR", "9.9.9.9");
            Console.WriteLine(wc.DownloadString("http://127.0.0.1/getip.aspx"));
            Console.ReadLine();
        }

getip.aspx

Code
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("your ip address is : "+GetUserRealrIp());
            Response.End();

}
        #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

下面是运行结果:

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

转载于:https://www.cnblogs.com/9999/archive/2009/09/20/1570676.html

由“ASP.NET网站限制访问频率”想到的两点问题(转)相关推荐

  1. ASP.NET网站限制访问频率

    最近做了一个免费发短信的小网站(http://freesms.cloudapp.net/),但发现最近有人破解了我的验证码,以每3秒/条的速度用我的短信服务来发他的广告.更换验证码程序和过滤关键字只是 ...

  2. IIS上asp.net网站无法访问

    在本地可以正常访问的网站部署到IIS上就无法访问了,错误:服务器应用程序不可用  您试图在此Web服务器上访问的Web应用程序当前不可用. 错误原因可能是 1. IIS上选的版本不一样,选择正确的版本 ...

  3. 构建ASP.NET网站十大必备工具

    最近使用ASP.NET为公司构建了一个简单的公共网站(该网站的地址:http://superexpert.com/).在这个过程中,我们使用了数量很多的免费工具,如果把构建ASP.NET网站的必备工具 ...

  4. 【ASP.NET】判断访问网站的客户端是PC还是手机

    [ASP.NET]判断访问网站的客户端是PC还是手机 原文:[ASP.NET]判断访问网站的客户端是PC还是手机 主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.N ...

  5. asp网站怎么跳转html,用asp实现网页邮箱访问的方法

    用asp实现网页邮箱访问的方法 2007-04-04 00:00:00 作者: 用asp实现网页邮箱访问的方法 希望大家支持点击广告! 前些日子在群里头有位朋友问到怎么实现在网页上的邮箱访问功能现在将 ...

  6. 如何提高网站的访问速度

    很多朋友都用虚拟主机来做网站,将网页文件存放在虚拟空间上,但是页面内容一多,网站打开的速度就显得特别慢,如果您碰到这种情况,与其寻求更好的空间, 不如通过优化网页代码来取得满意的速度.笔者总结了一些切 ...

  7. [SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap

    首先我要说明:Asp.Net内置的Sitemap与这里讲的Sitemap是完全不同的,Asp.Net中的Sitemap主要用于给用户导航,而这里说的Sitemap是用来给搜索引擎爬虫指路. 还是直接来 ...

  8. 云服务器iss列表,【踩坑】发布ASP.NET网站到本地IIS和云服务器

    疑问:如何在服务器上发布一个网站? 申请了某某云的1元服务器域名,然而并不知道有什么乱用.总所周知,服务器一般都是用来发布网站的,然后我就陷入了一个很大的疑问中:如何在服务器上发布一个网站? 想起之前 ...

  9. 推荐两款支持在linux下运行ASP.NET网站的国产免费WEB服务器软件

    推荐两款支持在linux下运行ASP.NET网站的国产免费WEB服务器软件 1.kangle kangle web server是一款跨平台(windows/linux/bsd).功能强大.安全稳定. ...

最新文章

  1. Maya教程-XGEN制作毛发技能学习 Patreon – Cartoon Grooming Series by Jesus FC
  2. python脚本画pie饼图_python 使用matplotlib.pyplot.pie绘制饼图
  3. mysql忘记密码恢复
  4. 关于 error: LNK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案【Qt】【 VS2010】
  5. CSS 12个趣味小技巧大公开 | 原力计划
  6. 创建一个TCP服务器端通信程序的步骤
  7. idea导出Oracle表结构和数据
  8. org.mybatis.caches.ehcache.LoggingEhcache
  9. C盘太小,调整磁盘分区大小
  10. 群晖docker位置_OMV利用Docker配置nextcloud,实现个人网盘的搭建!
  11. (linux vm虚拟机网络连接失败,重启网卡失败原因及解决办法)
  12. 2021-11-26学习总结
  13. 窗——开了又关,关了又开(改编)
  14. 这4个兼职平台实测靠谱,想做兼职的赶紧收藏起来看看吧
  15. 生成帮助文档(html或chm格式)
  16. 竹云+巨杉丨互信认证 安全可靠
  17. 如何将WORD中的公式转为图片
  18. DSG SuperSync大型数据库高性能复制平台产品介绍
  19. MySQL (十一) : 数据处理之增删改
  20. 解决idea依赖的包突然失效,本地的maven仓库也有,但是代码里面就是引不进来的问题

热门文章

  1. JDk8的新特性-流和内部iteration
  2. Python内置函数eval
  3. 深度学习要点———神经网络的类型
  4. Alpha 冲刺 (3/10)
  5. 金蝶API apiEnv.apiSession.Token = GetToken()报错
  6. 在YII2框架中使用UEditor编辑器发布文章
  7. O365(世纪互联)SharePoint 之站点个性化
  8. C#基础—不完整类型(局部类型)
  9. jeecg智能开发平台参与-2013年度中国优秀开源项目评比
  10. vi/vim 命令手册(初级篇)