ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:872.14KB ,
资源ID:10954971      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10954971.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网站类安全测试流程规范.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网站类安全测试流程规范.docx

1、网站类安全测试流程规范网站类安全测试流程规范说明:本文仅适用于:国际站、中文站和国际交易站目录1. 安全测试流程规范 41.1 定义 41.2 角色和职责 41.3 流程图 51.4 安全测试必要性的评估 61.5 任务描述 71.6 自动化安全测试录制场景设计指导方法 91.7 手工测试方法 101.8 安全测试手工测试用例规范 101.9 记录安全漏洞的规范性 101.10 主要产出物 111.11 注意点说明 112. Web安全漏洞简介及测试说明 122.1 XSS(Cross Site Script) 122.2 CSRF (Cross-site Request Forgery) 1

2、42.3 SQL Injection 152.4 URL Redirect 152.5 AccessControl 162.6 上传下载文件 182.7 Flash安全 183. 自动化工具Hatirx介绍 193.1 自动化工具Hatirx 193.2 Hatirx工具使用 203.3 报表中信息 223.4 手动测试工具 233.5 安全工具的原理 233.6 漏洞特征代码库在哪里? 233.7 Hatrix工具注意事项 244. 安全测试分析举例 241. 安全测试流程规范1.1 定义此文档的主要作用是对测试工程师在测试过程中的安全测试进行指导。安全测试过程包括测试工程师对安全测试范围的

3、界定、安全工程师的代码安全审核、测试工程师验证及测试。测试工程师目前主要采用两种方法做安全测试,一种是采用自动化安全工具Hatrix扫描测试,自动化安全工具主要能够覆盖XSS、CSRF、SQL Injection,一种是对URL Redirect和Access control这两种漏洞采用手工方式进行测试验证,两者的区别主要就是针对的漏洞类型不同。安全审核和安全测试区别在于:安全审核属于白盒测试,而安全测试属于黑盒测试,两者并不能互相取代。两者的目的是一致的,为了保证代码的安全性。但安全测试采用的是黑盒测试方案,而安全审核是采用静态代码扫描的方案,不考虑应用的逻辑,仅仅关心代码本身的安全特性。

4、并且只覆盖XSS,CSRF和SQL Injection三种漏洞,同时安全审核检测出的只是可疑点,不一定就是漏洞,是否是漏洞需要开发自己确定。所以安全审核的局限在于2点,1:无法覆盖URL Redirect和Access control漏洞。2:无法最终确认漏洞。安全测试正好能够祢补安全审核的局限。1.2 角色和职责序号角 色职 责(1) PM/技术经理a) 分配漏洞修复任务给研发工程师;b) 提交达到提测要求的代码版本给QA;(2) 开发工程师a) 在提交测试前进行安全审核,并在代码安全审核报告中登记信息;b) 对漏洞进行修复;c) 对于需要defer的漏洞,跟安全工程师确认,并输入defer

5、漏洞列表;(3) QAa) 评估是否需要做安全测试,提交安全测试范围(xxx项目/小需求安全测试传递清单)给产品线安全测试接口人或安全工程师Review;b) 测试分析阶段,将安全漏洞的测试方法加入到测试分析中;c) 对提测版本的安全状态进行测试;d) 将安全漏洞提bug到QC;e) 对已修复漏洞进行验证;f) 对QC中的安全bug进行跟踪;g) 项目或小需求完成后,记录安全漏洞数据,并将安全测试质量报告(安全测试传递清单)邮件发出。(5)安全测试接口人a) 帮助QA划分安全测试范围,辅助安全测试人员成长(前期需安全工程师协助)b) Review安全测试范围(xxx项目/小需求安全测试传递清单

6、)(前期需安全工程师协助)c) 数据保存,由于安全权限控制严格,最后的xxx项目/小需求安全测试传递清单由安全测试接口人负责在SVN上保存。Svn地址:http:/svn.alibaba-(4) 安全工程师a) 提供必要的协助,以使开发工程师顺利修复漏洞;b) 帮助QA划分安全测试范围,辅助安全测试人员成长;c) 对defer漏洞进行确认;1.3 流程图项目中安全测试流程图小需求中安全测试流程图1.4 安全测试必要性的评估1、如何评估项目是否做安全测试: 2011年要求项目均需要做安全测试,有特殊(如底层数据迁移等),需与安全工程师评估是否要做安全测试,并在XXX项目安全测试传递清单中注明。2

7、、如何评估小需求是否做安全测试:Aone上安全测试评估选项(目前未集成):说明:在Aone上未集成该安全测试评估选项时,暂且先用小需求安全功能list模板代替,在小需求提测前交给PM/技术经理,PM/技术经理进行各选项评估,将该模板填好传递给QA,QA再根据选项判断是否做安全测试。1.5 任务描述任务角色任务描述时间输入输出KickoffPM1. kickoff的时候,邀请安全工程师参加Kickoff,正式介入项目,了解项目背景及项目功能点和项目里程碑点。安全工程师1. 理解FRD,对项目安全需求审核;2. 视情况参加kickoff;(如不参加Kickoff安全工程师需要提前与PM沟通确认好)

8、;评审后的FRD安全需求分析报告(给开发同学的一些安全性建议)需求分析QA(现阶段由安全工程师辅助完成)1. 评审需求,识别哪些需求可以用脚本覆盖测试;哪些需要测试工程师编写用例形式,手工完成;需求分析XXX项目/小需求安全测试传递清单项目测试负责人1. 协助测试工程师一起评估手工安全测试范围;2. 测试计划里增加安全测试点的测试用例及执行安全测试工作量、时间安排;3. 手工安全测试执行周期与功能测试周期保持一致。安全测试工具运行周期为第一轮功能测试,回归测试之前;需求分析测试设计QA1. 对项目进行安全测试需求分析,对安全测试手工或自动化方法给出具体方案;自动化安全工具测试1. 自动化安全工

9、具扫描页面;手工安全用例测试2. 手工测试点;3. 添加安全用例评审;测试设计和用例编写QC上的安全测试策略测试用例评审测试工程师 首先评审安全测试用例部分(评审前需要提前将用例发送给安全工程师预审);安全工程师 参与安全测试用例评审(带着问题参加评审);代码安全review安全工程师开发提测前进行安全审核(代码安全review): 走Aone流程的直接于Aone上触发进行安全审核; 不走Aone流程的提测前需提交给安全工程师进行安全审核,并记录安全审核结果报告;XXX项目/小需求代码安全审核报告开发自测开发工程师 1. 根据安全测试工具输出的报告修复漏洞;编码阶段完成进行安全审核,回归测试前

10、完成漏洞修复提交测试PM/技术经理1. 根据项目计划,将代码版本提交QA进行测试;编码阶段至测试阶段执行安全测试QA自动化安全工具(Hatrix)测试进入功能测试阶段,录制设计好的场景并扫描,如发现安全漏洞,根据录制脚本在QC系统中提交安全类型的Bug,分配给相应开发工程师,描述中需注明安全漏洞的个数,并上传安全测试工具输出报告作为附件;注:项目扫描输出报表只需在QC平台提交一个安全类型的bug;第一轮功能测试启动时开始执行,第一轮功能测试结束前输出安全测试工具输出报告QC上的安全BugXXX项目/小需求安全测试工具输出报告手工安全用例测试1、 根据安全测试用例执行,如发现安全漏洞,在QC系统

11、中提交安全类型的Bug,分配给相应功能开发人员,描述中需注明安全测试类型及操作步骤;2、 验证安全测试发现的缺陷;功能测试执行全阶段(包括第一轮测试,第一轮回归测试、第二轮回归测试)QC上的安全类型Bug分配开发工程师修复漏洞PM/技术经理1、 根据QA上传的安全测试工具输出报告,分派开发工程师对漏洞进行修复,确认漏洞全部修复或提交遗留问题给安全工程师审核;2、 在QC安全类型bug中注释漏洞修复情况;3、 将defer漏洞列表提交给安全工程师确认;4、 若安全工程师不同意Defer,安排开发工程师修复漏洞或提请产品线经理审批。并将审批意见通知给安全工程师;功能测试阶段安全测试工具输出报告漏洞

12、修复结果Defer漏洞列表验证安全漏洞修复情况QA1、 再次运行安全测试工具及脚本,如果还有漏洞,将安全测试工具输出报告再次作为附件上传到QC的Bug中。bug reopen给相应开发人员;2、 如果没有漏洞,将bug close;3、 安全漏洞处理完毕做为进入回归测试的条件;功能测试阶段PM/技术经理在QC安全类型bug中注释的漏洞修复情况QC上的安全BugXXX项目/小需求安全测试工具输出报告确认Deferred Bug安全工程师1、 审核安全测试报告;2、 对PM/技术经理提交的Deferred漏洞列表进行确认,确认并达成一致意见后在QC相应的bug上填写Deferred备注;功能测试阶

13、段Defer漏洞列表QC上的安全BugDefer漏洞列表QA1、 对安全工程师确认的Deferred安全类缺陷列表进行确认,达成一致意见后在QC相应的bug上填写备注,并将QC上的bug设置为deferred状态;功能测试阶段Defer漏洞列表QC上的安全BugDefer漏洞列表结果记录与备份QA1、 将安全测试过程中的Bug和Deferred Bug的记录;2、 总的Bug数的统计均更新于XXX项目/小需求安全测试传递清单并邮件发出。回归测试阶段XXX项目/小需求安全测试传递清单XXX项目/小需求安全测试传递清单QA接口人1、 将结果保存于SVN上,SVN地址:http:/svn.aliba

14、ba-XXX项目/小需求安全测试传递清单XXX项目/小需求安全测试传递清单1.6 自动化安全测试录制场景设计指导方法Hatitx脚本录制的覆盖面要求覆盖UC中涉及的所有请求的页面。请求包括了get和post请求,主要是页面中的链接和表单提交。录制场景的设计可以按照功能、业务逻辑进行等价类划分,例如:可以按照会员类型划分等价类,UC中没有显示说明会员类型不同会引起业务或展示页面逻辑不同,那么只需要录制一遍,但是UC中说明了不同会员类型的业务逻辑不同,即使同样的请求或是表单提交都需要分别录制。一个场景从业务起始页面开始包含等价类划分后的业务逻辑流程直到业务结束页面,最终通过一个场景或者多个场景覆盖

15、项目中包括的所有功能业务逻辑页面,场景以一个脚本保存或多个脚本无影响。对于流程的前置条件重复可以录制一遍,比如两个业务场景都需要用户登录,那登录操作的脚本只需要录制一遍。1.7 手工测试方法针对手工测试覆盖的两种漏洞类型URL Redirect和Access control测试方法比较简单,工具也只是用到浏览器及其插件。URLRedirect漏洞的测试范围是UC中设计的外部跳转功能点,方法是如果跳转目的URL为用户输入参数,只要通过浏览器插件将对应参数改为非阿里巴巴的URL地址,然后发送请求后观察跳转页面是否为非阿里巴巴网站,如果是则说明有URL跳转的漏洞。Access control漏洞主要

16、的测试方法是通过浏览器篡改HTTP请求的插件,获得HTTP请求参数,并进行非法参数替换并提交,查看服务端是否对权限进行校验。或者直接在地址栏拼接URL,测试服务端是否对访问权限进行校验。1.8 安全测试手工测试用例规范见QC账号:guest域:ALI_ICBU_TEST项目:英文站测试用例库路径:Subject_2011_测试用例体系003_藏经阁03_安全类 - 列出了一些典型的安全测试手工测试用例,供参考。针对安全测试用例,在项目文件夹中增加”安全用例”文件夹。1.9 记录安全漏洞的规范性Hatrix手工扫描 - 针对扫描出的安全漏洞进行分析 - 将分析结果在QC上提交Bug,同时上传相应

17、Hatrix工程于附件中。对大量的录制进行筛选,只提交由Bug的地方的工程。手工测试部分 - 对于安全漏洞在QC上提交Bug。BUG需进行细分(必填):缺陷类型 - 安全漏洞缺陷细分 - CSRF/XSS/SQL Inject/Access Control/其它缺陷级别 - high1.10 主要产出物1、XXX项目/小需求代码安全审核报告 安全工程师2、XXX项目/小需求安全测试工具输出报告 Hatrix自动导出3、XXX项目/小需求安全测试传递清单 QA 记录并备份说明:项目中安全测试质量报告无需单独发出,但在功能测试质量报告中要说明安全测试的质量情况。SVN地址:http:/svn.al

18、ibaba-1.11 注意点说明 自动化安全测试工具Hatirx存在部分场景无法适用的情况,比如:页面中包含验证码(这种验证码包含显示和隐藏两种),由于工具无法获取验证码所以会导致回放请求失败。遇到类似情况,建议与开发协商绕过验证码校验的方案,例:部署两套环境,一套安全测试(修改代码使服务端不验证),一套功能测试。 安全测试策略需要在测试计划中明确定义,实施方法要明确说明并体现在测试分析中,如策略中需要手工测试,手工测试的用例编写在QC平台中,在测试计划评审中review。 是否进行安全测试是在项目立项时由安全审核部门来确定,非项目经理定义。 如对项目中安全测试方法无法准确把握,可以咨询安全审

19、核工程师(国际站接口人:姜禹)给出指导意见。 由于fuzz原理,扫描过程中会提交大量数据。如果对脏数据比较敏感,请扫描后注意清理脏数据。 推荐安全扫描报告的保存格式为RTF,以方便各执行人阅读。 脚本录制需注意的问题:1) 按页面或者功能录制,不建议整个操作流程录制一次,因为这样可能有很多重复相同的http请求,保证相同的http请求只录制一次。2) 脚本录制细节不关心提交表单的输入参数组合(会被参数化),只关心提交表单这一操作。 安全测试问题跟踪流程,需注意:1) 提出问题:将所发现的问题导出一份安全测试报告作为附件,并在QC里提安全bug给相应开发工程师,保存录制的脚本并以附件形式上传于Q

20、C。2) 修改问题确认:开发工程师修改后把问题fixed掉,验证前先和安全工程师确认下修改点。3) 问题验证:再次用hatrix工具扫描录制的脚本,验证修改掉的问题,如果发现新问题或者已修改的问题没修改好,可以reopen这个安全bug给相应开发工程师。2. Web安全漏洞简介及测试说明按照公司的实际应用情况,我们目前主要面对的Web安全漏洞主要有以下五种:XSS,CSRF,SQL Injection,URL Redirect和AccessControl。2.1 XSS(Cross Site Script)XSS(Cross Site Script),跨站脚本攻击。它指的是恶意攻击者往Web页

21、面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。比如恶意攻击者将一段获取Cookie的脚本持久化到页面后,正常用户访问该页面后其Cookie信息就会被攻击者获取。参见wiki:http:/en.wikipedia.org/wiki/Cross-site_scripting案例:下面是公司法务部投诉系统的截图,图中显示的是一个登陆界面图示2-1 登陆界面当浏览器的url改为图示2-2XSS漏洞主要采用Hatrix进行测试,Hatrix会根据Http数据,构建不同的测试用例进行Fuzzer测试,但是这个测试数据量是非常大的,所以在使用Ha

22、trix的一个注意点是,如果明确一个参数是系统级别的,比如_csrf_token_, event_submit_do_login,action等,在工具测试时不需要将这些选上。2.2 CSRF (Cross-site Request Forgery)CSRF (Cross-site Request Forgery),跨站点请求伪造。通常指在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL(GET,POST 提交方式均可),从而达到改变服务器端数据的目的。这一类攻击依赖于你的网页中的表单,脆弱的表单很容易受到攻击。比如A站点有一删除功能URL为: B站点一页面中有这样一段代码:这样用户

23、浏览B站点的该页面时,随即也触发了A站点的删除功能。参见wiki:http:/en.wikipedia.org/wiki/CSRF案例:下图是阿里巴巴国际站登录后top截图,可以看到用户intldev已经登录这时用户访问csrfsignout.html页面,注意这并不是原来alibaba域名下的,而是本地的一个页面:然后再刷新页面,截图如下:这时用户intdev已经不处于登录状态,但是这个期间并没有做退出操作,原因就在于csrfsignout.html的这张图片,代码是:img src= onerror=this.src=图片做了退出的请求,因此用户就不知情的做了一个合法操作,这就是个简单CS

24、RF攻击。CSRF的检测比较简单,主要还是通过Hatirx工具进行扫描测试,只要在form中检测是否存在_csrf_token_即可。但是CSRF漏洞之间的威胁程度是不同的,CSRF漏洞的严重程度是和form本身的作用有关的,对于一些敏感数据的操作,比如用户信息的CRUD是一定需要加入_csrf_token_的,但是对于部分非业务逻辑form,比如用于数据仓库日志打点的空form便不需要加入_csrf_token_。2.3 SQL InjectionSQL Injection就是向服务器端提交事先准备好的数据,拼凑出攻击者想要的SQL语句,以改变数据库操作执行计划。比如有一sql语句是 sel

25、ect * from USER where USER.id = id and USER.read=true,而id的数据来自于用户的请求: 这样用户只要用提交 or 1=1 即可直接忽略sql中其他条件判断了。参见wikihttp:/en.wikipedia.org/wiki/Sql_injection现有的防SQL Injection开发方案都是基IBatis的,所以在基于IBatis开发的应用中出现SQL Injection的可能性比较小。但是Hatrix的SQL Injection检测是基于返回信息中的数据库信息,对于进行错误处理的程序是很难进行检测的,比如自动跳转到404页面。所以如果

26、测试工程遇到非IBatis开发的项目,可能需要手动构建SQL Injection的测试用例,这些用例可以参考hatrix中模版。2.4 URL RedirectURL跳转的应用很广,在这里我们只局限于可以修改URL地址的跳转,比如正确登录后的跳转到之前页。这个之前页的URL地址就是可以修改的,是不确定的。URL Redirect的主要威胁在于钓鱼网站,恶意用户可以利用URL Redirect将有恶意跳转的URL转发给其他用户,而此URL同时能顺利逃过域名检测,比如 http:/ha.ckers.org/ 如果URL Redirect检测不严格,登录之后即跳转到http:/ha.ckers.or

27、g案例:下图浏览器地址显示的是一个淘宝的合法url地址,由于该应用对url过滤不严格,接受了参数url=http:/202.113.13.92/RmfishServlet/urldirect,并以该url做了一次跳转,于是用户在访问taobao页面时,实质是请求了一个第三方网页,可想这个危险有多大!URL跳转本身是属于业务逻辑跳转的一种实现,所以工具检测成本比较高,同时应用中URL Redirect数量比较小,在需求文档中应该有描述,所以URL Redirect漏洞需要测试进行手动检测,主要的检测方法是采用手工的方式将目的URL地址替换成非阿里巴巴域名的URL地址,检测是否会跳转到非阿里巴巴的

28、网站。2.5 AccessControl这里的访问控制主要是一些越权操作漏洞。Access Control主要包括了水平权限和垂直权限两种,水平权限是指能访问其他用户受保护的内容,从权限关系的角度来看,这种情况突破了权限的水平约束。垂直权限问题就是访问需要更高授权的资源,比如未登录用户能够访问需要登录的资源,普通用户访问须管理员权限的资源等,从权限关系的角度看,这种情况是突破了权限的垂直约束,获取到了更高权限。案例:下图是国际站Myalibaba Contacts模块下的Manage Contacts, 其中有个一个查询联系人的功能,url为 ,XXX为一个联系人的ID,如下图所示,这个页面没有问题,因为ID为63488082联系人就是属于当前用户的联系人,但是问题在于当恶意用户修改了cid后就能任意获取到其他联系人的信息,即使该联系人并不是该用户的联系人,如图所示,ID为63422XXX的用户信息被获取了,但是他并不是当前用户的联系人。这就是一个AccessControl漏洞。应用中的越权操作的检测需要对应用的业务逻辑和数据扭转有很清晰的了解,所有现阶段框架上和工具上没有合适的解决方案,此类漏洞只能依赖于手工测试。而手工测试的方法主要有两种:1)用户对私有资源的访问或是操作,比如访问用户的信息,如联系人信息,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1