为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

网络投票的攻击原理及综合应对策略

2011-10-25 8页 pdf 141KB 28阅读

用户头像

is_816892

暂无简介

举报
网络投票的攻击原理及综合应对策略 第 1 页 共 8 页 网络投票的作弊原理及综合解决方案 赖春江 苏哲新 广东 东莞 523129 【摘要】本文根据作者的工作实践,对网络投票中常用的攻击原理、手段及防范措施进行了 深入分析和研究,针对不同防范措施的优点及缺陷,对防范技术进行了改进,形成了应对网 络投票攻击的综合解决方案,取得了较好的效果。 【Abstract】Based on the work experience of the author, the thesis offers an in-depth analysis and ...
网络投票的攻击原理及综合应对策略
第 1 页 共 8 页 网络投票的作弊原理及综合解决方案 赖春江 苏哲新 广东 东莞 523129 【摘要】本文根据作者的工作实践,对网络投票中常用的攻击原理、手段及防范措施进行了 深入和研究,针对不同防范措施的优点及缺陷,对防范技术进行了改进,形成了应对网 络投票攻击的综合解决方案,取得了较好的效果。 【Abstract】Based on the work experience of the author, the thesis offers an in-depth analysis and research on the principles, methods and countermeasures of common online-voting attacks.With the improvement of defense technologies according to the advantages and disadvantages of different countermeasures, a comprehensive solution against online-voting attacks is finally formed, which can obtain satisfactory results in the practice. 【关键词】HTTP协议 网络投票 验证码 IP地址 攻击 【Keyword】HTTP protocol Internet voting Verification code IP address Network attacks 1. 引言 网络调查及投票是伴随互联网的发展而出现的新的调查及投票方式,这种新的投票方式 打破了传统投票方式在时间和地域上的限制,拓宽了参与人群的范围,已被广泛应用。由于 投票的数据基本上是在数据库里,使得投票结果的统计和分发更加便捷和及时。但由于 HTTP协议本身的缺陷和网络参与者身份确认的复杂性也使其极易遭受作弊攻击,出现 “刷 票”行为。近年来,本单位承办了多次大型网络投票活动,作者在这些活动的技术工作中积 累了一定实践经验。本文针对在实际工作中发现的不同攻击手段进行深入分析,并提出有效 的解决方案。 2. 攻击原理及技术 2.1 HTTP的无状态性 HTTP是 Hyper Text Protocol的缩写,中文译为超文本传输协议。设计它的目的在于支 持超文本的传输,客户端向 HTTP服务器发送请求,HTTP服务器接收到请求后将客户端请 求的相应资源发回给客户端。因为每次的请求和响应都是相对独立的,所以服务器和客户端 都没有必要记录这一过程。一般而言,一个 URL 对应着唯一的超文本资源,HTTP 服务器 对于不同的客户端同一个 URL的请求也会返回相同的超文本。因此,记录用户的行为状态 变得无必要,所以 HTTP协议被设计成无状态的连接协议。 2.2 网络投票的记录用户行为需求 网络投票一般是指通过 web 页面在客户端浏览器填写投票表单,然后提交给服务器进 行记录处理的投票方式。 网络投票往往需要选择候选选项(候选人或候选单位等)、投票人 的身份信息(姓名、身份证号码等)。由于投票的结果往往涉及各参与方的利益,候选人往 往会为了影响投票结果进行各种各样的作弊“刷票”行为。因此,为了保证投票结果的公平 第 2 页 共 8 页 有效性,投票活动组织者需要对投票行为进行有效的控制,其方法一般有要求填写表单的身 份证号码字段进行身份证号码合法性校验、IP地址投票限制和验证码等。 2.3 网络投票常见的作弊攻击手段 1)伪造身份证号码。一般来说,重大的网络投票一般都需要投票者填写表单时提交合 法的身份证号码才能进行投票,并以身份证号码来作为甄别是否重复投票的依据。但互联网 上的网络投票一般不可能跟公安系统的身份证数据库进行对接,因此,投票处理程序只能从 逻辑上根据客户端提交的身份证号码进行算法有效性的校验,只要客户端提交的身份证号码 通过算法校验,投票程序就认为这是一个合法的身份号,并且投票记录数据库里没有该身份 证号码的投票记录就允许其进行投票。因此,如果投票处理程序只做了身份证号码算法合法 性的校验,那么作弊者就能对该投票程序进行任意攻击和作弊“刷票”。 2)突破 IP 地址投票数限制。为了防止作弊者不断的进行作弊“刷票”,投票处理程序 往往对同一个 IP地址在特定时间段内的投票总数做了限制。服务器端对客户端 IP地址一般 回采用两种方式,一种是通过 HTTP会话的 REMOTE_ADDR获取跟服务器通信的客户端 IP 地址,如果投票程序通过这种方式获取客户端 IP并对每 IP在某一时段内的投票总数做了限 制,作弊者必须拥有相当数量的公网真实 IP 资源才能对投票程序发起影响结果的攻击。另 一种是先通过 HTTP头的 X_FORWARDED_FOR字段来获取通过代理服务器访问投票服务 器的客户端真实 IP,但是否可以获取客户端真实 IP取决于代理服务器是否允许服务器端获 取客户端的真实 IP,同时如果客户端不通过代理服务器访问投票服务器,投票服务器同样 获取不了客户端的 IP。一般来说,web程序开发人员为了更加准确地获取客户端的 IP地址 往往会先试图去获取 X_FORWARDED_FOR 的值,获取失败后再去获取跟服务器直接通信 的主机 IP,代码如下: Asp代码段: Dim clientIp clientIp = trim(request.ServerVariables("HTTP_X_FORWARDED_FOR")) if clientIp = "" or clientIp = "unknown" then clientIp = request.ServerVariables("REMOTE_ADDR") end if jsp代码段: String clientIp = request.getHeader("x-forwarded-for"); if(clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { clientIp = request.getRemoteAddr(); } 由于 X_FORWARDED_FOR 是通过客户端提交的 HTTP 头来获取,而客户端的 HTTP 头的数据可以在提交前进行任意修改,因此,web程序开发人员想通过尽可能穿透代理服务 器获取客户端真实 IP 地址的美好愿望给投票作弊者敞口了大门,客户端通过修改每次提交 的 HTTP头里的 X_FORWARDED_FOR字段值就能成功突破 IP投票数限制进行任意投票。 3)识别破解图片认证码 为了解决HTTP协议的无状态性给Web应用程序带来的问题,产生了两种用于保持 HTTP 连接状态的技术,一个是 Cookie,而另一个则是 Session。由于 Cookie值存储在客户端的 硬盘上,同样存在着跟 HTTP 头一样被修改的危险,因此,数据保存在服务器端的 Session 技术则显得更加安全可靠。网络投票程序为了防止客户端利用特定软件通过重复提交投票表 单信息来进行作弊,往往使用了图片验证码技术,在服务端生成图片验证码信息并通过 Session来对客户端输入进行认证,理论上,只要验证码信息不被客户端作弊程序破解,客 第 3 页 共 8 页 户端就无法实施大规模的批量刷票作弊行为,从而保证投票的安全可靠。 图片验证码技术的实施,提高了网络投票作弊的技术门槛,在一定程度上保证了投票的 安全。同时,投票验证码实施技术的复杂性也对 Web 开发人员提出了更高的技术要求。目 前,基于图片验证码生成技术的难度限制,绝大部分网站都使用了阿拉伯数字和英文字母的 图片验证码,并且生成的图片上的干扰线和噪点并不多。针对数字和英文字母的破解算法很 容易获取并且破解准确率比较高,其攻击原理如下: ① 先分析目标验证码图片的验证码类型(数字、字母或组合型等)、验证码位数、字符 位移范围、字符旋转范围、干扰线及噪点、前景色、背景色、图片的大小等。 ② 根据验证码类型确定相应的破解字符范围及各字符图片独特的象素值。 ③ 根据图片的前景色、背景色、干扰线及噪点情况去除图片的干扰线、噪点及背景色。 ④ 根据验证码位数、字符位移范围、字符旋转范围对图片进行字符截取。 ⑤ 将截取的字符图片跟预先确定的破解字符范围内的字符图片进行象素匹配,匹配象 素命中最高的字符就是验证码字符。 3. 解决方案 通过对网络投票攻击原理及手段的技术分析,我们可以知道目前要完全通过技术手段杜 绝网络投票的作弊行为难度很大。但对现有技术进行改进,并组合使用更加难破解的图片验 证码、单一 IP 投票数限制及身份证号码校验等多种防范手段,可以大幅提高作弊成本和降 低其成功率,使其作弊行为不足以对影响投票结果。通过同步采取以下几种手段,可以基本 堵塞网络投票中的漏洞: 第一种防范手段:采用复杂干扰象素背景中文图片验证码技术,是最核心的防范手段, 通过网站近年来多场大型网络投票的检验,效果明显,投票结果得到各界公认,从未出现因 投票结果而引起的质疑和纠纷。图片验证码技术,很好地弥补了 HTTP协议无状态连接的缺 陷,其缺点是实施技术门槛高,一般网络程序只能生成数字和英文字母地验证码,降低了攻 击破解技术门槛。中文验证码被成功攻击的难度大,但用来生成数字和字母的传统验证码算 法对中文验证码生成的难度很高,因此需要对验证码生成技术进行改进。目前,不少网站允 许用户上传图片的论坛博客基本上都会对用户上传的图片叠加网站版权信息的“水印”文字 或者图片,因此我们可以把该技术运用到中文验证码的生成上来。该技术可由于是把验证码 字符叠加到背景图片上,因此可以根据文字前景颜色选择干扰性强的背景图片,同时对验证 码的字符集可以简单地进行大范围扩充,只要服务器上字符集有的字符都可生成,甚至做出 如计算“拾除以贰加叁等于几”这样的问题式的验证码。用于生成“水印”的技术一般使用 Web Server组件,目前基于 Asp、PHP、Java等 web开发语言的组件都容易得到,技术实现 的门槛相对也比较低。下面以 Asp+IIS平台下的 Persits software公司的 AspJpeg图片组件 为例说明: 1)预先制作干扰性强的复杂背景图片集,如制作 20张图片。 2)随机生成验证码值,并写入 Session 里。为了投票客户端输入的方便,这里只选择 了 GB2312字符集的第一级常用汉字 3755个。生成代码如下: '常用汉字生成(GB2312编码:16-55区,每区 16位) '验证码位数:2-4位,变量 sChinese保存生成的验证码值 Dim sChinese,iArea,iSeat,iCharacter Dim iTextLeft,iTextTop,iCharacters Randomize 第 4 页 共 8 页 iTextLeft = Cint(rnd * 16) iTextTop = Cint(rnd * 14) iCharacters = Cint(rnd * 2) + 2 sChinese = "" for iCharacter = 1 to iCharacters Randomize iArea = Cint(Rnd * 39) + 16 Randomize if iArea = 55 then iSeat = Cint(Rnd * 89) else iSeat = Cint(Rnd * 94) end if sChinese = sChinese & chr((160 + iArea) * 16 * 16 + (160 + iSeat)) next session(“Code”) = sChinese '把验证码值写入 session 3)随机选择背景图片、字体、前景色及验证码位移值,把验证码叠加到图片上 Dim arrFontFamily(4),arrFontColor(4) arrFontFamily(0) = "隶书" arrFontFamily(1) = "华文新魏" arrFontFamily(2) = "华文仿宋" arrFontFamily(3) = "方正姚体" arrFontFamily(4) = "华文彩云" arrFontColor(0) = &H34AD0A arrFontColor(1) = &H38011C arrFontColor(2) = &H09E209 arrFontColor(3) = &H2C95C1 arrFontColor(4) = &H094786 Dim iTextLeft,iTextTop,iCharacters Randomize '生成验证码随机位移 iTextLeft = Cint(rnd * 16) iTextTop = Cint(rnd * 14) Dim sBackground Randomize sBackground = Cstr(Cint(rnd * 19) + 1) & ".jpg" '随机选择背景图片 第 5 页 共 8 页 Dim Image,imgBackground,imgGenerated,imgCharacter Set Image = Server.CreateObject("Persits.Jpeg") if Err.Number=-2147221005 then response.write "找不到相关图片组件!" response.End() end if Image.Open Server.MapPath(sBackground) if err.number then response.Write("打开相应的背景图片失败!") response.End() end if imgBackground = Image.Binary Randomize Image.Canvas.Font.Color = arrFontColor(cint(rnd * 4)) '随机前景色 Randomize Image.Canvas.Font.Family = arrFontFamily(cint(rnd * 4)) '随机字体 Image.Canvas.Font.Bold = false Image.Canvas.Font.Size = 26 Image.Canvas.Font.ShadowColor = &H000000 Image.Canvas.Font.ShadowYOffset = 1 Image.Canvas.Font.ShadowXOffset = 1 Image.Canvas.Brush.Solid = True Image.Canvas.Font.Quality = 20 Image.Canvas.PrintText iTextLeft,iTextTop,sChinese imgCharacter=Image.Binary Set Image1 = Server.CreateObject("Persits.Jpeg") Image1.OpenBinary imgBackground Set Character = Server.CreateObject("Persits.Jpeg") Character.OpenBinary imgCharacter Image1.DrawImage 0,0, Character, 0.8 imgGenerated = Image1.Binary response.BinaryWrite imgGenerated set imgBackground = nothing set imgCharacter = nothing set imgGenerated = nothing Image.close Image1.Close 第 6 页 共 8 页 Character.Close 4)为了防范攻击程序不断重复获取验证码来进行攻击,在生成验证码后随即把系统当 前时间当作验码生成时间写入 Session里,并在投票程序里验证码提交延时设置。 Session("Code_GeneratedTime") = now() '记录验证码生成时间 客户端投票表单(验证码)控制(例如延时 30秒),Javascript代码如下: 表单提交按钮代码: 控制表单提交按钮 javascript代码: 服务器投票处理程序验证码延时检测,Asp 代码如下(因为正常投票用户已通过 Web 页面进行延时控制,可以判断服务器收到的未达到延时时间的表单提交均来自非法作弊用 户,因此可以直接结束此次投票会话): <% If trim(Session("Code_GeneratedTime"))=”” or not isDate(Session("Code_GeneratedTime")) or datediff("s", Session("Code_GeneratedTime"),now())<30 then Session("Code_GeneratedTime") = Empty Session("Code ") = “” response.end() end if %> 验证投票验证码: 客户端表单代码:
验证码:
看不清?换 一个
请输入:
 
服务器端验证,Asp代码如下: <% sCode = Trim(request("Code")) IF sCode="" or Session("Code")<>sCode Then response.Write("验证码不正确,请返回重试!
") response.Write("返回") response.End() End If '如果验证码正确,继续完成投票 %> 第二种防范手段:在使用更加难破解的验证码外,通过直接获取跟服务器通信的主机 IP地址而不是通过获取 HTTP头的 X_FORWARDED_FOR字段来获取客户端 IP地址,避免 IP地址伪造攻击,然后根据需要进行一定的 IP投票数限制,使得作弊攻击者必须拥有大量 的真实公网 IP地址资源,大幅提交作弊门槛和成本。 第三种防范手段:进行投票时要求客户提交个人信息,如提交身份证号码等,并对其进 行合法性校验。该方法对使用投票作弊软件往往作用不大,但对手动刷票能增加其作弊成本。 第四种防范手段:对每次投票都进行详细记录,如投票对象、投票时间、来源 IP、个 人信息等,以便发现作弊攻击时进行查找和票数清理。 4. 结论 由于 HTTP协议本身的弱点及现有技术的限制,目前难以完全通过技术手段杜绝网络投 票的作弊行为,但通过对现有技术的改进,根据具体情况灵活组合使用不同的技术手段,可 以大幅提高把网络投票的作弊成本,降低作弊行为的成功率,从而保证投票结果的真实、公 正、可靠。 经过本单位网站一年多的实践,综合运用上述策略,在多次大型网络投票活动中,基本 杜绝了运用软件投票机进行作弊的行为,投票结果得到了各方面的认可,保证了网络投票的 公正性和准确性,取得了明显的效果。 参考文献 [1]《JavaScript宝典》 【美】Danny Goodmansa著 [2]《ASP技术手册》 A.Keyton Weissinger著 [3]《AspJpeg user manual》Persits Software公司 [作者博客:http://blog.chinaunix.net/u3/93910/]
/
本文档为【网络投票的攻击原理及综合应对策略】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索