1、Web性能测试
Web性能测试涉及的范围太广,但一般web开发者在程序上线以后很多都曾遇到过性能的问题。普遍表现为页面速度开始急剧变慢,正常访问时间变的很长,或则干脆给你抛出异常错误页面。这里会涉及到很多可能发生的情况,举例几个最主要发生的情况:
- 数据库连接超过最大限制,目前一般表现为程序的连接池满,拒绝了与数据库的连接。
- 数据库死锁
- Web Server 超过最大连接数(一般在虚拟主机上才会限制)
- 内存泄漏
- Http连接数太多,即访问量超过了机器和软件设计正常所能提供的服务
2、CC攻击
CC主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观。
一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大.
CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面).这一点用一个一般的性能测试软件就可以做到大量模拟用户并发。
假设服务器A对Search.asp的处理时间需要0.01S(多线程只是时间分割,对结论没有影响),也就是说他一秒可以保证100个用户的Search请求,服务器允许的最大连接时间为60s,那么我们使用CC模拟120个用户并发连接,那么经过1分钟,服务器的被请求了7200次,处理了6000次,于是剩下了1200个并发连接没有被处理.有的朋友会说:丢连接!丢连接!问题是服务器是按先来后到的顺序丢的,这1200个是在最后10秒的时候发起的,想丢?!还早,经过计算,服务器满负开始丢连接的时候,应该是有7200个并发连接存在队列,然后服务器开始120个/秒的丢连接,我们发动的连接也是120个/秒,服务器永远有处理不完的连接,服务器的CPU 100%并长时间保持,然后丢连接的60秒服务器也判断处理不过来了,新的连接也处理不了,这样服务器达到了超级繁忙状态.
我们假设服务器处理Search只用了0.01S,也就是10毫秒(这个速度你可以去各个有开放时间显示的论坛看看),我们使用的线程也只有120,很多服务器的丢连接时间远比60S长,我们的使用线程远比120多,可以想象可怕了吧,而且客户机只要发送了断开,连接的保持是代理做的,而且当服务器收到SQL请求,肯定会进入队列,不论连接是否已经断开,而且服务器是并发的,不是顺序执行,这样使得更多的请求进入内存请求,对服务器负担更大.
防范方法
说了攻击原理,大家肯定会问,那么怎么防御?使用硬件防火墙我不知道如何防范,除非你完全屏蔽页面访问,我的方法是通过页面的编写实现防御.
1. 使用Cookie认证.这时候朋友说CC里面也允许Cookie,但是这里的Cookie是所有连接都使用的,所以启用IP+Cookie认证就可以了.
2. 利用Session.这个判断比Cookie更加方便,不光可以IP认证,还可以防刷新模式,在页面里判断刷新,是刷新就不让它访问,没有刷新符号给它刷新符号.给些示范代码吧,Session:
程序代码:
〈%
if session(“refresh”)〈〉 1 then
Session(“refresh”)=session(“refresh”)+1
Response.redirect “index.asp”
End if
%〉
|
这样用户第一次访问会使得Refresh=1,第二次访问,正常,第三次,不让他访问了,认为是刷新,可以加上一个时间参数,让多少时间允许访问,这样就限制了耗时间的页面的访问,对正常客户几乎没有什么影响.
3. 通过代理发送的HTTP_X_FORWARDED_FOR变量来判断使用代理攻击机器的真实IP,这招完全可以找到发动攻击的人,当然,不是所有的代理服务器都发送,但是有很多代理都发送这个参数.详细代码:
程序代码:
〈%
Dim fsoObject
Dim tsObject
dim file
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
response.write "无代理访问"
response.end
end if
Set fsoObject = Server.CreateObject("Scripting.FileSystemObject")
file = server.mappath("CCLog.txt")
if not fsoObject.fileexists(file) then
fsoObject.createtextfile file,true,false
end if
set tsObject = fsoObject.OpenTextFile(file,8)
tsObject.Writeline Request.ServerVariables("HTTP_X_FORWARDED_FOR")&"["&Request.ServerVariables("REMOTE_ADDR")&"]"&now()
Set fsoObject = Nothing
Set tsObject = Nothing
response.write "有代理访问"
%〉 |
这样会生成CCLog.txt,它的记录格式是:真实IP [代理的IP] 时间,看看哪个真实IP出现的次数多,就知道是谁在攻击了.将这个代码做成Conn.asp文件,替代那些连接数据库的文件,这样所有的数据库请求就连接到这个文件上,然后马上就能发现攻击的人.
4. 还有一个方法就是把需要对数据查询的语句做在Redirect后面,让对方必须先访问一个判断页面,然后Redirect过去.
5. 在存在多站的服务器上,严格限制每一个站允许的IP连接数和CPU使用时间,这是一个很有效的方法.
CC的防御要从代码做起,其实一个好的页面代码都应该注意这些东西,还有SQL注入,不光是一个入侵工具,更是一个DDOS缺口,大家都应该在代码中注意.举个例子吧,某服务器,开动了5000线的CC攻击,没有一点反应,因为它所有的访问数据库请求都必须一个随机参数在Session里面,全是静态页面,没有效果.突然发现它有一个请求会和外面的服务器联系获得,需要较长的时间,而且没有什么认证,开800线攻击,服务器马上满负荷了.
代码层的防御需要从点点滴滴做起,一个脚本代码的错误,可能带来的是整个站的影响,甚至是整个服务器的影响,慎之!
分享到:
相关推荐
WEB攻击Web性能测试和CC攻击和方法和防范软件测试1、Web性能测试Web性能测试涉及的范围太广,但一般web开发者在程序上线以后很多都曾遇到过性能的问题。普遍表现为页面速度开始急剧变慢,正常访问时间变的很长,或则...
Web性能测试工具是用于评估和优化网站或Web应用程序性能的关键工具。在IT行业中,特别是对于开发人员、系统管理员和质量保证工程师来说,这类工具是非常重要的。微软提供的Web性能测试工具以其易用性和强大的功能而...
WebWEB软件测试中Web性能测试和CC攻击和方法和防范1、Web性能测试Web性能测试涉及的范围太广,但一般web开发者在程序上线以后很多都曾遇到过性能的问题。普遍表现为页面速度开始急剧变慢,正常访问时间变的很长,或...
本书首先介绍基础的性能测试理论,接着详细介绍如何使用jmeter完成各种类型的性能测试。实战章节中作者以测试某大型保险公司电话销售系统为例,手把手教会读者如何用jmeter来完成一个实际的性能测试任务。 本书...
本文档虽然内容不完整,但是从提及的关键词可以分析出一些关于WEB性能测试方法的知识点。 一、性能测试工具 文档中提到了LOADRUNNER这一工具,它是由惠普公司开发的一款商业负载测试软件。LOADRUNNER可以模拟...
在IT行业中,Web性能测试是确保线上应用稳定性和用户体验的关键环节。这门实践课程,"Web性能测试实战",旨在帮助我们深入理解如何有效地评估和优化Web应用的性能。性能测试不仅关注应用的速度,还涉及资源消耗、...
WEB性能测试实战 WEB 性能测试 实战 软件测试
资源名称:零成本实现 Web 性能测试——基于Apache JMeter内容简介:《零成本实现Web性能测试:基于Apache JMeter》是一本关于Web性能测试的实战书籍,读者朋友们在认真阅读完《零成本实现Web性能测试:基于Apache ...
这本书详细介绍了Jmeter在web性能测试中的各项功能和应用场景,下面我们将深入探讨其核心知识点。 1. **Jmeter简介**:首先,了解Jmeter的基本概念和背景非常重要。Jmeter最初设计为负载测试工具,但随着发展,它已...
文章通过分析Web模型、服务器系统、性能分析以及性能测试工具,全面介绍了Web应用性能测试的重要性,并提供了相关的技术细节和实施建议。在实际操作中,开发者需要根据具体的Web应用特点选择合适的模型和工具,以...
在IT行业中,性能测试是确保系统能够高效运行的关键环节,特别是...总之,gRPC和WebAPI各有优势,性能测试是评估和选择合适技术的重要手段。通过深入理解两者的工作原理和性能特点,我们可以根据项目需求做出最佳决策。
在IT行业中,Web性能测试是确保应用程序质量和用户体验的关键环节。"零成本实现WEB性能测试"这一主题主要聚焦于如何利用开源工具Apache JMeter进行高效且经济的性能测试。Apache JMeter是一款强大的、纯Java编写的...
【全国软件测试大赛省赛web性能测试芒果TV】是一场针对软件测试技能的竞赛,主要关注Web应用的性能测试,以芒果TV的“电视剧”功能为测试对象。参赛者需使用指定的测试工具——慕测 JMeter客户端进行脚本编写和执行...
"web性能测试_FindU_满分答案.zip"这个压缩包文件可能包含了一份关于如何进行Web性能测试并达到理想效果的详细解答。 首先,Web性能测试的目标通常包括以下几个方面: 1. **响应时间**:衡量用户请求到服务器响应...
《零成本实现Web性能测试:基于Apache JMeter》是一本关于Web性能测试的实战书籍,读者朋友们在认真读完本书后,能够将所学知识应用到生产实践中。本书首先介绍基础的性能测试理论,接着详细介绍如何使用JMeter完成...
web性能测试是确保网站和web应用程序稳定、响应速度快、用户体验良好至关重要的手段。基本性能指标是衡量web应用性能的...由于文档部分内容识别有误或缺失,上述知识点是根据实际web性能测试领域的知识和经验总结的。
从给定的文件信息中,我们可以提取出关于Web性能测试工具的知识点,特别是以WAS(Web Application Stress Tool,Web应用程序压力测试工具)为例的使用方法和特点。下面是对文件中提到的各个部分的详细解释: 1. ...
### Web网站性能测试工具知识点详解 #### 一、性能测试的重要性及目的 在当今高度数字化的时代,Web网站作为企业和组织对外展示的重要窗口之一,其性能好坏直接影响到用户体验、品牌形象甚至是企业的经济收益。...
零成本实现WEB性能测试 基于APACHE JMETER,使用jmeter进行web性能测试