[asp.net]网站数据安全之验证码

news/2024/5/8 21:36:22/文章来源:https://blog.csdn.net/weixin_30347335/article/details/96313245

数据安全是网站实现必不可少的其中一环,其中最基本的就有防止暴力破解这一类的机器人攻击。

机器人攻击,顾名思义,单纯地由程序算法计算出用户名对应的密码,达到破解账户的功能。

机器人攻击的原理如下:

网页与服务器是通过http协议进行通信的,网页发出请求(request),经由服务器处理过后再把响应信息(response)返回给网页。

如果服务器不进行任何安全设置的话,机器人就可以通过循环,不断发送请求数据给服务器,比对服务器端的密码信息,就能达到暴力破解的效果。

 

为了伪造网页请求,首先需要做的就是知道网页发送了什么东西给服务器,因此需要截获网页发送给服务器的http报文。

以下是一个简单的asp.net登陆网页:

1 <body>
2     <form id="form1" runat="server">
3     <div>
4         <asp:TextBox ID="UID" runat="server" name="UID"></asp:TextBox><br />
5         <asp:TextBox ID="PW" runat="server" name="PW"></asp:TextBox>
6     </div>
7     <asp:Button ID="Button1" runat="server" Text="登录" onclick="Button1_Click" />
8     </form>
9 </body>

 

处理程序:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 
 8 public partial class Login : System.Web.UI.Page
 9 {
10     protected void Page_Load(object sender, EventArgs e)
11     {
12 
13     }
14     protected void Button1_Click(object sender, EventArgs e)
15     {
16         if (UID.Text == "admin" && PW.Text == "123")
17         {
18             Response.Write("登陆成功");
19         }
20         else
21         {
22             Response.Write("登陆失败");
23         }
24     }
25 }

网页如下,输入用户名为admin,密码为111:

然后立即用监视工具(Fiddler)查看网页发送给服务器的请求报文:

从报文中,可以找到PW=111的字样,这就是我们发送过去的密码,通过循环地修改这个值,就能完成暴力破解。

 

机器人破解程序如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Net;
 6 
 7 namespace ConsoleApplication1
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             WebClient wc = new WebClient();
14             wc.Encoding = Encoding.UTF8;
15             for (int i = 0; i < 5000; i++)
16             {
17                 string recv = wc.DownloadString("http://localhost:34581/Login/Login.aspx?__VIEWSTATE=%2FwEPDwULLTEzNjkxMzkwNjRkZItmCBZEBtaljaITi%2BP9tOSzd0a1hsw6qmnZTsRWpzng&__EVENTVALIDATION=%2FwEdAATO0aG3gZnScLq%2B3YhzJsDQVbQGLX9gL7AHTDMv6bbPFxoYRGJFkVe8AgQLV57tKfLN%2BDvxnwFeFeJ9MIBWR693X4PRaFD34N5nly1a8ZxUF2WtsMvHQaZ3G0IQUv6PL2A%3D&UID=admin&PW=" + i + "&Button1=%E7%99%BB%E5%BD%95");
18                 if (recv.Contains("登陆成功"))
19                 {
20                     Console.WriteLine("密码:" + i);
21                     break;
22                 }
23                 
24             }
25         }
26     }
27 }

 

另外,其实也可以通过C#中的webBrowser控件(  getElementById().SetAttribute()  )来实现机器人

 

验证码就是一个防止暴力破解的很好方法。

验证码实现如下图:

 

分为以下几个步骤:

1、用户加载网页,页面发出生成新验证码的请求

2、一般处理程序受到请求后生成验证码,其中包含两部分:图片和相对应的字串(存于session)。

3、一般处理程序返回响应,网页加载该验证码图片。

4、填写验证码,网页发出请求,要求服务器的处理程序处理。

5、处理程序从session获取字串,与网页请求的验证码进行对比。

 

网页代码如下:

 1 <body>
 2     <form id="form1" runat="server">
 3     <div>
 4     <img src="Handler.ashx" />
 5     </div>
 6     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 7     <br />
 8     <asp:Button ID="Button1" runat="server" Text="登陆" onclick="Button1_Click" />
 9     </form>
10 </body>

<img src="Handler.ashx"/>这一句就是加载验证码图片。当加载网页的时候,会请求Handler.ashx处理程序处理,要求其提供验证码图片。

 

生成验证码的一般处理程序代码如下:

 1 <%@ WebHandler Language="C#" Class="Handler" %>
 2 
 3 using System;
 4 using System.Web;
 5 
 6 public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState{//必须加上System.Web.SessionState.IRequiresSessionState
 7     public void ProcessRequest (HttpContext context) {
 8         context.Response.ContentType = "image/JPEG";        //说明响应的格式是JPEG
 9         using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(100, 50))            //生成位图
10         {
11             using (System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(bitmap))      //生成画布
12             {
13                   //以下这段为生成随机数,并把其存到session内
14                 Random rand = new Random();
15                 int code=rand.Next(1000, 9999);
16                 string strCode=code.ToString();
17                 HttpContext.Current.Session["code"] = strCode;
18 
19                      //下面这段是生成验证码图片
20                 graph.DrawString(strCode, new System.Drawing.Font("宋体", 30), System.Drawing.Brushes.Green, new System.Drawing.PointF(0, 0));
21                 bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);   //位图保存在响应的输出流中
22             }
23         }
24     }
25  
26     public bool IsReusable {
27         get {
28             return false;
29         }
30     }
31 
32 }

一般处理程序生成验证码的bitmap,并存到响应(response)的输出流中,网页获得响应信息后把bitmap显示在网页上

 

为了实现点击验证码图片后,自动更换验证码,可以作如下修改

<img src="Handler.ashx" onclick="this.src='Handler.ashx?aaa='+new Date()"/>

点击图片后,浏览器会判断当前的URL与目标URL是否一样,如果一样则不会做任何响应,否则会向目标URL发出请求。

由于new Date()产生的信息一直变化,因此能保证不同的两秒内会产生不同的URL,从而达到点击更换的效果。

转载于:https://www.cnblogs.com/TaigaCon/archive/2012/08/20/2646941.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_743581.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定制 LAMP 网站服务平台

安装环境&#xff1a;系统&#xff1a;CentOS release 6.2 (Final)Mysql: mysql-5.1.62.tar.gz http:httpd-2.2.25.tar.gzphp: php-5.4.19.tar.gz前期准备:先将需要的软件包拖到虚拟服务器root上&#xff0c;如下图[rootlocalhost ~]# unzip LAMP.zip[rootlocalhost ~]# yum …

做网站用什么语言_给网站做外链现在还有用吗?

网站外链现在还有用吗&#xff1f;如今已经是众说纷纭的一个话题。但我想说的是这和搜索引擎发展的三个重要阶段有着紧密的联系&#xff0c;所以用处还是有的&#xff0c;但有多少呢&#xff1f;请往下仔细了解。网站外链有用吗作为一名SEO从业者&#xff0c;给网站做外链是一件…

SharePoint【表单认证方式】-- 更改现有Sharepoint网站的认证方式,让其支持FBA:01.前期准备...

之前公司开发的Sharepoint 网站使用的是Classic Mode Authentication方式(基于Windows AD方式)&#xff0c;近期的客户需求需要使这个已投入使用的Sharepoint应用不但能支持原有的AD认证方式&#xff0c;并且还要能支持Form方式。 于是问题出来了&#xff0c;一般我们在新…

html关于圣诞节主题的网页,玩转圣诞创意!10个以圣诞节为主题的优秀网站设计...

设计达人网 &#xff1a;还有9天就到圣诞&#xff0c;如果你还没有idea来做这个节日专题&#xff0c;那么今天收集的这10个圣诞节主题网站就不要放过咯&#xff0c;有大名鼎鼎的追踪圣诞老人创意&#xff0c;也有帮你自由创造圣诞老人的绘画网站&#xff0c;全都是技术与创意兼…

利用 squid 反向代理提高网站性能(转)

本文在介绍 squid 反向代理的工作原理的基础上&#xff0c;指出反向代理技术在提高网站访问速度&#xff0c;增强网站可用性、安全性方面有很好的用途。作者在具体的实验环境下&#xff0c;利用 DNS 轮询和 Squid 反向代理技术&#xff0c;实现了网站的负载均衡&#xff0c;从而…

换服务器要重新百度站长验证站点吗6,六个步骤搞定更换网站服务器

原标题&#xff1a;六个步骤搞定更换网站服务器最近又不少站长朋友发帖咨询说要更换网站的服务器了&#xff0c;但是怕误操作导致网站被K&#xff0c;因为已经有不少的站长朋友来反馈&#xff0c;说自己因为换了IP导致网站被K了。那么今天云雀运维就来跟大家谈一下&#xff0c;…

lamp部署php工程,Centos7运维(2)-第一次在Linux下部署PHP项目,采用LAMP网站架构(Linux+Apache+MySQL+PHP)...

LAMP指的Linux(操作系统)、Apache(HTTP 服务器)&#xff0c;MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的缩写&#xff0c;一般用来搭建web 服务器。(1)Mysql 5.61.下载mysql-server文件[rootCentos~]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.n…

伪静态隐藏域名后缀_网站建设三部曲:域名程序+主机

怎么建设网站&#xff0c;企业外包&#xff0c;个人研究&#xff0c;做为一个建站老手&#xff0c;我给大家说一下建站的三部曲&#xff1a;域名、程序、主机。如果说有第四部和第五六步的话&#xff0c;那么就是备案、友链等。一、关于域名兄弟啊&#xff0c;注册域名还是尽早…

hishop网站迁移后出现DataProtectionConfigurationProvider错误(转)

配置错误说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。分析器错误信息: 未能使用提供程序“DataProtectionConfigurationProvider”进行解密。提供程序返回错误信息为: 该项不适于在指定状态下使用。 (异常来自 HRES…

【项目总结】扯一扯电商网站前端css的整体架构设计(1)

最近半忙不忙的写了一个外包网站&#xff0c;网站主要功能是艺术品竞拍和艺术衍生品的销售。工程已经完成了80%左右&#xff0c;现在前后端代码量已经50W行左右&#xff0c;我主要负责的是前端设计和前端布局。下面就先放一个网站的设计图吧&#xff0c;因为涉及到甲方的“商业…

tomcat找不到servlet这个类_办公中常用的模板和工具找不到?这个网站就能帮到你...

相信大家都知道我们平时办公的时候&#xff0c;需要去找一些办公类的资源&#xff0c;但是去哪里找免费的呢&#xff1f;只需要用到一个网站就够了&#xff0c;各种模板和抠图功能都有&#xff0c;总有一款适合你&#xff01;一、PPT资源1、PPT模板首先我们登陆办公资源网这个网…

化工网站开发_石油化工行业网站定制 | 石油化工产品销售网站制作

在网站建设中&#xff0c;如果想要运营好网站&#xff0c;那么一定是离不开对网站的访问信息进行收集、记录并归类&#xff0c;还要在统计这些数据的基础上进行深度分析&#xff0c;来找到网站出现的一些问题&#xff0c;从而进行整改。今天我们来具体说说网站建设中&#xff0…

Python进阶学习网站

2019独角兽企业重金招聘Python工程师标准>>> www.scipy.org 科学 数学 工程 http://www.pygame.org/lofi.html http://www.pygame.org/news.html pygame&#xff08;库&#xff09;是一个免费和开源的Python编程语言库&#xff0c;用于制作多媒体应…

反复刷新增加访问量_基于爬虫刷新某网站访问量!我说怎么上千万呢!

前言&#xff1a;前一段时间看到有博友写了爬虫去刷新博客访问量一篇文章&#xff0c;当时还觉得蛮有意思的&#xff0c;就保存了一下&#xff0c;但是当我昨天准备复现的时候居然发现文章404了。所以本篇文章仅供学习交流&#xff0c;严禁用于商业用途当我在写文章的同时&…

php 禁止抓取,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

一、Apache①、通过修改 .htaccess 文件修改网站目录下的.htaccess&#xff0c;添加如下代码即可(2 种代码任选)&#xff1a;可用代码 (1)&#xff1a;RewriteEngineOnRewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDadd…

java天气获取网站_java扒取天气网站的数据

1:由于天气apk接口不稳定所以经常获取不到信息。于是就动手写一个扒取天气网站上的数据然后做成json&#xff0c;apk直接调用服务器上扒取的数据增加稳定性。2&#xff1a;项目主要是用servlet然后正则表达式来提取网站信息。3:我觉得比较难得地方就是如何写正确的正则来提取出…

使用Varnish为web网站加速

使用Varnish为网站加速varnish概述 Varnish是一款高性能的开源HTTP加速器&#xff0c;挪威最大的在线报纸Verdens Gang (http://www.vg.no) 使用3台Varnish代替了原来的12台squid&#xff0c;性能居然比以前更好。Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一&am…

iis网站域名绑定

这里解释两种绑定 一、全局ip未分配 二、绑定指定域名 1、添加主机名 注释&#xff1a;没有绑定主机名的进站默认就会被访问。绑定主机名的进站访问特定主机名的网站。转载于:https://www.cnblogs.com/zz-930474270/p/4569358.html

谈谈网站防盗链

引子&#xff1a;明明引用了一个正确的图片地址&#xff0c;但显示出来的却是一个红叉或写有“此图片仅限于***网站用户交流沟通使用”之类的“假图片”&#xff08;下图便是网易博客的防盗链效果&#xff09;。用嗅探软件找到了多媒体资源的真实地址用下载软件仍然不能下载。下…

从服务器检索时出错dfdferh01_服务器空间的稳定性对seo优化非常重要—竹晨网络...

网站降权是指搜索引擎对网站评定的级别下降&#xff0c;是搜索引擎对网站进行的一种处罚方式。通常多为网站自身作弊导致的&#xff0c;改正错误一段时间后会自行恢复。特征一&#xff1a;关键词排名大幅度下降特征二&#xff1a;网站收录量减少特征三&#xff1a;搜索引擎快照…