登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

019 网站安全之用户登录  

2012-04-27 10:03:57|  分类: 我的实验室 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近要对网站做一个升级,考虑到安全性的问题,因此对网站整体检查了一遍,发现几处需要完善的地方。其中一个就是用户登录的问题。原网站没有增加验证码的功能,只是单纯的一个用户名和密码的文本框,点击登录按钮后,如果成功便进入系统,如果账号不存在或密码错误,将对用户提示。如图:
019 网站安全之用户登录 - yinzhihua2008 - 樱之花 yinzhihua2008

 这样会给网站破解者提供机会,如果想得到进入系统的权限,可以尝试暴力破解法。
如果知道某个用户名,不知道密码,则可以编写密码字典暴力破解;
如果不知道用户名,则可以编写用户名和密码字典暴力破解;

要暴力破解,就要伪装提交数据包。首先要找到POST地址,可以使用httpwatch来获取到POST地址、发送的头信息(Headers)和POST的数据。
019 网站安全之用户登录 - yinzhihua2008 - 樱之花 yinzhihua2008

 然后把字典内容作为参数传递。
019 网站安全之用户登录 - yinzhihua2008 - 樱之花 yinzhihua2008
根据返回的数据包判断是否登录成功(如数据包中包含登录的错误提示,表示没有成功),如果成功记录当前循环判断的字典数值,它就是可以登录系统的用户名和密码,接着继续执行后面的循环直到结束。

为了防止暴力破解,网站登录需要加一个随机的验证码。可是,有的用户不喜欢这个验证码,因为让他们多敲击了一次键盘。我们可以加这样的功能来满足他们的需求。可以加一个判断,如果输入的用户名或密码连续错误N次,便提示输入验证码。这样就解决了这个问题,而且给给破解者带来了麻烦,当然如果他能破解验证码,那增加的这个防护功能,就不起作用了。
修改后,若登录失败超过N次后,登录界面显示如下图:
019 网站安全之用户登录 - yinzhihua2008 - 樱之花 yinzhihua2008

2012-10-30 补充:

对于暴力破解,或理解为批量验证账号密码的方法上文有所提及,下面补充一下一般操作需要注意的地方。

1.首先取得表单发送的POST请求的信息,主要包括POST地址,提交的数据(如用户名和密码的参数),header信息。

2.通常只需要只要POST地址和提交的数据时传递参数就够了,但有时候服务器会防止外连接做一些处理,这个时候就需要设置一下header的Referer信息。Referer,是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。 如可以使用Request.ServerVariables("HTTP_REFERER")防外连接。

3.发送请求的方法有几种,一种方法是使用MSXML2.XMLHTTP类,需要添加引用Microsoft XML v6.0,不过在使用这种方法的时候,偶尔会发现在处理个别网站时,明明参数都设置正确的,但是请求返回的结果就是不正确,这时候你需要考虑第二种方法,使用WinHttp.WinHttpRequest类来处理请求数据,需要添加引用Microsoft WinHTTP Services,version 5.1

4.因为是批量验证账号和密码,所以有必要考虑使用线程控制,及可以暂停、继续或停止任务,否则程序给你的感觉会一直卡在那直到运行结束。

5.如果使用了线程,你需要告诉用户当前的进度,需要让用户知道总共需要验证的数目,和当前正在验证的位置。

6.如果碰到封IP的情况,你还需要考虑自动断网,自动拨号以获得新IP的问题。

7.最为困难的是碰到验证码的防护,如在上文中讲到,一旦在网站中加入了验证码的机制,就必须考虑怎么样绕过验证码的防护,这将是对程序员的一大挑战。

 

  评论这张
 
阅读(533)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018