南通最专业的开锁公司 南通最好的开锁公司 君威遥控器电池 君威专用汽车钥匙电池雷诺科雷傲汽车钥匙遥控器电池更换方法 南通开锁公司电话_南通修锁 换锁芯 开汽车锁 崇川区 港闸区 如皋 如东开锁 南通开锁公司电话 南通金钥匙开锁服务部-专业开修锁 换锁芯(正规公安工商备案) 南通开锁公司电话 南通开锁公司修锁 装锁电话|崇川区开锁|港闸区开锁 led吸顶灯光源 吸顶灯32w 吸顶灯 灯管 吸顶灯 节能灯泡 led吸顶灯灯泡 三头吸顶灯 led吸顶灯灯管 欧普圆形吸顶灯 55w吸顶灯 吸顶灯光源 旅游壶 真空保温 汉方养生壶 美的电热水壶15s08a2 半球牌电饭煲 美的 mg123-d hd2 飞科 三洋洗衣机全自动 新安怡 学饮杯 黑苦荞黄酮软胶囊 苦荞糖安胶囊 五彩凉山苦荞茶 苦荞茶250g 全胚芽黑苦荞茶500 内蒙特产苦荞茶 富贵康苦荞茶 苦荞面包邮 正中苦荞茶包邮 正中苦荞茶 包邮 苦荞香茶西部 苦荞香茶 西部 轩庆苦荞玫瑰鲜花饼 苦荞真空 苦荞500克 苦荞茶120 苦荞 真空 0.02安全套包邮0.2大力马鱼线0.4mm0.4鱼线0.5l氮纤维高压瓶007sh充电器007电子请柬00高达xn-raiser01102400018401背囊0-25微米千分尺03g101系列全套图集0-3个月婴儿连体哈衣05-08本田奥德赛05ffc23套机05版河南动感地带0603贴片电阻包06年款英派斯06斯巴鲁森林人cd机07军衔07军用水壶07款福克斯两厢07数码迷彩07速腾大灯总成 泰好大门锁 泰好豪华大门锁 cei超b级锁芯 玻璃橱门锁 指纹锁耶鲁4109 耶鲁凯特曼指纹锁 防盗挂锁包邮 包挂锁 包梁挂锁 新君威门锁 新君威门锁扣 指纹锁木门 太空铝黑色门锁 泰好浴室铜门锁 浴室门锁不锈钢 1178冷库门锁 南通配新桑塔纳2000 3000 时代超人 志俊汽车钥匙_配帕桑塔纳钥匙遥控器_帕萨特钥匙全丢重配崇川区 南通配宝来汽车钥匙_配宝来遥控器_宝来钥匙全丢如皋 南通配帕萨特汽车钥匙_配帕萨特遥控器_帕萨特钥匙全丢通州 南通配凯越汽车钥匙_配凯越遥控器_凯越钥匙全丢如东

  • 格子衬衣女 长袖 秋
  • t男恤 短袖 韩版包邮
  • 男士职业衬衫
  • 衬衫 女 长袖点点
  • 衬衫 素色 男 宽松 休闲
  • 职场气质衬衫女
  • t恤男短袖加大码不掉色
  • 帅T 小西装
  • 裤子棕色长裤男
  • 衬衣 女 灯芯绒
  • 衬衣 女商务
  • 女士职业衬衫短袖
  • 休闲裤 男 修身
  • jamesearl纯棉休闲长裤
  • 占姆士女式长袖衬衫
  • 男黑色商务休闲棉长裤
  • 女士长袖衬衫
  • 男士绿色休闲长裤
  • 全棉短袖衬衫 男 薄
  • 女士长袖纯棉衬衫
  • 秋裤男直筒
  • 马自达3汽车挂件吊坠饰品 高档琉璃汽车挂饰品蒙迪欧致胜汽车挂件吊坠饰品 高档琉璃汽车挂饰品 启辰D50汽车挂件吊坠饰品 高档琉璃汽车挂饰品起亚K2汽车挂件吊坠饰品 高档琉璃汽车挂饰品索纳塔汽车挂件吊坠饰品 高档琉璃汽车挂饰品天籁汽车挂件吊坠饰品 高档琉璃汽车挂饰品 天语SX4汽车挂件吊坠饰品 高档琉璃汽车挂饰品英朗GT汽车挂件吊坠饰品 高档琉璃汽车挂饰品英伦SC7汽车挂件吊坠饰品 高档琉璃汽车挂饰品自由舰汽车挂件吊坠饰品 高档琉璃汽车挂饰品雨燕汽车挂件吊坠饰品 高档琉璃汽车挂饰品雪佛兰迈锐宝汽车挂件吊坠饰品 高档琉璃汽车挂饰品

    秋冬季现代瑞纳 宝马5系 帕萨特 日产骐达专用汽车毛绒方向盘套 江苏省盐城市地图2014 最新版 江苏省卫星地图2014 最新版 百度地图-谷歌地图-中国地图-北京地图-搜狗地图google地图 广本凌派汽车座垫 凌派秋冬季汽车坐垫 四季通用 长安福特福克斯油耗详解 宝来汽车遥控钥匙电池 更换方法 图解宝来遥控钥匙的电池换法 宝骏630车钥匙遥控器电池更换步骤 更换方法 迈腾车钥匙电池 迈腾更换遥控器电池详解逍客汽车钥匙电池 遥控器逍客智能钥匙的电池更换步骤 新天籁智能遥控钥匙电池 新天籁智能钥匙如何更换纽扣电池 golf6 汽车钥匙遥控器换电池 图解高尔夫6遥控钥匙的电池换法 长安福特福克斯加速时间详解[图] 福克斯汽车钥匙电池 福克斯钥匙电池更换作业 Q5车钥匙更换电池方法 图解新凯越车钥匙更换电池
  • 汽车坐垫 可爱
  • wrc汽车坐垫
  • 汽车坐垫套四季通用
  • 明锐冰丝 汽车坐套
  • 骐达汽车脚垫全包围
  • 三菱蓝瑟汽车坐垫
  • 捷达汽车脚垫 3d
  • 奥迪S7坐垫
  • 别克荣御坐垫
  • Jeep指南者坐垫
  • 力帆320坐垫
  • 路虎卫士坐垫
  • 双龙爱腾坐垫
  • 斯柯达Yeti坐垫
  • 现代途胜坐垫
  • 一汽威乐坐垫
  • 哈飞路宝汽车坐垫
  • 吉利远景汽车坐垫
  • 吉利全球鹰汽车坐垫
  • 房门锁执手锁 防盗挂锁
  • 运动短裤
  • 短裤 男
  • 半裙
  • 手工拖鞋鞋底
  • iphone4皮套 手机套
  • 机油滤清器扳手工具
  • 桑塔纳3000机油
  • 家居摆件现代
  • 玻璃摆件
  • 瓷器摆件
  • 马到成功摆件
  • 高档瓷器摆件
  • 宝马山地自行车包邮
  • 根雕工艺品摆件
  • 家居摆件吊脚娃娃
  • 泰国佛像摆件工艺品
  • 美利达儿童自行车
  • 天鹅摆件结婚
  • 龙龟摆件纯铜
  • 金摆件聚宝盆
  • 亲子自行车 女式
  • 客厅卧室装饰摆件
  • 贵宾狗摆件
  • 木摆件
  • 羚羊头摆件
  • 招财兔摆件
  • 自行车前包
  • 牛仔短裤
  • 短裤 男 休闲
  • 高腰短裤
  • 夏季短裤
  • 蕾丝短裤
  • 连体短裤
  • 裙裤
  • 裤裙
  • 拖鞋 海外
  • 拖鞋 浴室
  • 拖鞋 防滑
  • 拖 鞋 男
  • 拖鞋 女
  • 浴室拖鞋
  • 家居拖鞋
  • 凉拖鞋
  • 夏天拖鞋
  • 香菇丸
  • 韩国饮料
  • 打草绳小松打草绳二手挖掘机小松 小松割灌机配件 钢木书桌办公桌钢木桌玻璃杯子水壶钢化玻璃水壶钢木办公桌钢木电脑桌进口玻璃水壶玻璃水成份防冻玻璃水包邮防冻玻璃水车用 环保果皮箱环保垃圾袋环保垃圾桶小松120-6常州小松割草机小松打草头小松割灌机小松割灌机配件 咖啡厅员工制服_咖啡厅服务员制服_西餐咖啡服务员制服_咖啡馆制服_咖啡店西餐
  • 5号充电电池8节套装
  • 5-7号电池充电器
  • 充电电池5号正品
  • 可充电电池5号
  • 7号充电电池批发
  • 7号电池包邮
  • 1.5v充电电池5号
  • 5号充电器电池免邮
  • 双鹿电池5号正品
  • 双鹿9v电池
  • 双鹿电池批发
  • 双鹿7号电池
  • 双鹿1号电池
  • 双鹿碱性电池
  • 三星s4电池原装正品
  • 三星s4原装电池后盖
  • n7100原装电池
  • 小米2s原装电池
  • galaxy s4大容量电池
  • galaxy s4原装电池
  • galaxy s3电池
  • galaxy nexus电池
  • 三星galaxy s4电池后盖
  • 品胜小米2s电池
  • 品胜手机电池
  • 小米2a电池品胜
  • 背夹电池iphone4s
  • note2背夹电池
  • 三星s4背夹电池皮套
  • 自行车fixedgear 自行车眼镜 近视 婴儿推车小自行车 自行车骑行眼镜风镜 钻石自行车 山地自行车立管 led自行车气嘴专用灯 三鼎自行车坐椅儿童 自行车线管 金镶玉玉器挂件 自行车脚踏双轴承 铬钼钢架自行车 邦德自行车女式 山地公路自行车 自行车骑行手电筒 自行车灯架 灯夹包邮 自行车水壶支架 自行车 组装 mosso 自行车载mp3 26自行车 男生单车 自行车 折叠 复古 giant山地车 自行车 炫彩自行车 七彩马亲子自行车 ucc山地车 自行车 贝嘉琦 女孩自行车 zxc自行车配件码表 自行车前置安全椅 女童自行车 小龙哈比 自行车碳纤维垫圈 自行车骑行用品 装饰木板板材 美式壁挂装饰 家具装饰配件 衣服装饰亮片 婚礼礼品实用 公司开业庆典礼品 婴儿衣柜 儿童欧式公主床 床围栏护栏嵌入式 床靠背套 派克圆珠笔芯 卧室台灯床头灯现代 个性笔袋 派克im签字笔 彩色铅笔包邮 派克宝珠笔芯 派克笔芯正品 百乐摩可擦笔笔芯 斑马油笔 微型钢笔钓鱼竿 电子教鞭遥控笔 镭射灯激光笔 彩色水笔芯 黑色水笔笔芯 公爵宝珠笔芯 touch3代马克笔 韩国文具笔包邮 水溶性彩色铅笔 马可 sgp触控笔 礼品创意笔筒 铂金 项链 pt950 男 老竹笔筒 竹雕笔筒 六福珠宝铂金手镯 8.9寸笔记本电脑 三菱签字笔1.0 华硕游戏笔记本 插座面板

    使用 Ant 集成 IBM Security AppScan Standard 进行自动测试

    前言

    IBM Security AppScan Standard(以下简称 AppScan Standard)是业界一款优秀的 Web 应用安全测试工具。越来越多的机构将之应用到实际开发过程中,并尝试将 AppScan Standard 集成到他们的自动化构建中去。AppScan Standard V8.6 的 CLI 命令行界面提供了丰富的命令及参数,用户可以很方便地从脚本或者批处理文件中控制 AppScan Standard,轻松实现将 AppScan Standard 集成到自动构建中去。本文将跟读者介绍 AppScan Standard 的 CLI 的命令结构和常见命令,并结合实例演示如何通过 Apache Ant 集成 AppScan Standard。

    AppScan Standard CLI 命令简介

    AppScan Standard 安装完成后,会在系统变量 "PATH" 中增加 AppScan Standard 的安装根目录(譬如 C:\Program Files (x86)\IBM\Rational AppScan\)。AppScan Standard CLI 命令 AppScanCMD.exe 即存在于 AppScan 的安装根目录中。因此用户打开 DOS 命令窗口,即可以执行 AppScan Standard 的 CLI 命令。

    AppScan Standard CLI 命令调用比较简单,主要包括三个部分:CLI 命令 + CLI 子命令 + 子命令参数。ACLI 命令包括三个子命令:Exec,Report,Help。下面列出三个子命令的功能和详细参数。

    • Exec 命令

    Exec 命令会使用指定的起始 URL 创建新扫描,运行和保存此扫描。同时还可以使用它来生成和保存扫描的报告。如果没有指定 CLI 子命令,缺省模式下将会运行 exec 命令。


    表 1. Exec 命令参数
    参数 说明
    /starting_url 设置扫描的起始 URL。起始 URL 也可以在 /base_scan 或者 /scan_template 中指定。starting_url 参数会覆盖前两者参数中的起始 URL。
    /base_scan 设置源扫描文件(必须包含完整路径),新建扫描文件将使用该源扫描文件中的扫描配置。
    /dest_scan 设置新扫描文件的保存位置(必须包含完整路径)。此参数若未设置的话,AppScanCMD 会把新扫描文件保存到 Temp 文件夹,并提示新扫描文件的完整路径。
    /scan_template 设置扫描模板文件,新建扫描文件将使用该模板文件中的扫描配置。
    /old_host
    /new_host
    /old_host 跟 /new_host 配合使用,新扫描文件将会用 new_host 来替换扫描中所有的 old_host 路径。这个参数非常有利于脚本重用,譬如 FVT 阶段的 AppScan 脚本即可通过这种方式重用到 UAT 环境中。
    /login_file 指定新扫描文件需导入的登录序列。
    /multi_step_file 指定新扫描文件需导入的多步骤文件
    /manual_explore_file 指定新扫描文件需导入的手工探索文件。
    /policy_file 指定新扫描文件所使用的测试策略文件。
    /additional_domains 指定新扫描文件在扫描中包含的、除起始 URL 之外的域。如果有多个域,建议用分号将它们分隔。
    /report_file 设定新扫描文件需生成的报告名称和路径(必须包括完整路径)。
    /report_type 设定报告格式。支持 <xml|pdf|rtf|txt|html|rc_ase> 六种报告格式,缺省值为 XML。rc_ase 指的是 AppScan Enterprise 报告,使用时需保证设置好 AppScan Enterprise 的连接参数。
    /min_severity 指定要在报告中包含的最低结果严重性(仅适用于非 XML 报告),支持四种严重性 <low|medium|high|informational>,缺省值为 low。
    /test_type 指定要在报告中包含哪些类型的测试,支持四大类型 <All|Application|Infrastructure|ThirdParty>,缺省值为 All。
    /verbose 包含此标志,则在输出中包含进度行。
    /scan_log 包含此标志,则在扫描时显示扫描日志。
    /explore_only 包含此标志,则仅运行"探索"阶段。
    /test_only 包含此标志,则仅运行"测试"阶段。
    /multi-step 包含此标志,则仅测试多步骤操作。
    /continue 包含此标志,则继续扫描 base_scan 文件。

    • Report 命令

    Report 命令用来载入指定的扫描文件,生成对应的报告。Report 命令参数主要有 /base_scan,/report_file,/report_type,/min_severity,/test_type 这五项,用法和功能跟 Exec 命令中的同名参数相同。本文不再赘述。

    • Help 命令

    Help 命令用以帮助熟悉 CLI 的命令用法。Help 命令没有参数。

    AppScan Standard CLI 命令在执行完成中会输出退出状态代码,用以表示操作是否成功,如果不成功还通过退出状态代码提示错误内容。


    表 2. CLI 命令退出代码表
    代码 意义
    0 成功完成
    1 AppScan 启动失败
    2 命令行错误
    3 许可证无效
    4 装入失败
    5 扫描失败
    6 报告失败
    7 保存失败
    8 常见错误

    看到这里,相信读者已经对 AppScan 的 CLI 命令已经了然于心。AppScan Standard CLI 命令非常直观明了。但我们也看到 Exec 命令有很多参数,究竟什么情况下该用哪些参数?采用 base_scan 还是采用 starting_url 和 scan_template 等参数?什么样的脚本重用性更好,更适合使用 AppScan Standard CLI 来集成?下面笔者将跟读者分享自己的一些经验。

    常用 AppScan Standard CLI 命令

    敏捷开发过程中,我们往往按照故事(Store)为单元进行开发。笔者实际工作中往往会为每个故事录制 AppScan Standard 的测试脚本,一旦某个故事实现并部署到 FVT(Function Verification Test)环境后,我们会将录制好的该故事的测试脚本加入到集成测试中。在不同迭代(Sprint)阶段,我们会为新增加的故事录制新的测试脚本。在前期 的几个迭代阶段,一般仅执行新增故事的安全测试。在最后的几个迭代阶段内,会执行前面阶段所录制的全部测试脚本。FVT 测试完成后系统迁移到 UAT(User Acceptance Test)环境后,还会再次执行全部测试脚本。为了更好地保证系统的安全性,UAT 测试阶段还会由其他安全测试团队对系统再进行一次完整安全测试。

    可以看出,整个开发阶段安全测试任务比较多,如果每次都打开图形界面去录制脚本进行安全测试,这个工作量将会比较大。因此笔者实际工作中比较注重测试脚本的重用性。提高脚本重用性主要通过以下几种方式:

    • 将通用的扫描配置导出为 .scant 模板,譬如“环境定义”、“探索选项”、“定制参数”、“错误页面”、“通信和代理”、“测试选项”等。
    • 将定制好的测试策略导出为 .policy 文件,通常将测试测罗分为几组,如“应用程序”、“基础结构”、“侵入性”等。在 FVT 阶段侧重测试应用程序漏洞,在 UAT 阶段侧重测试基础结构及侵入性测试。
    • 将录制好的登录脚本导出 .login 文件。一般建议在登录脚本中使用公用测试帐号,如果绑定了个人帐号,建议各人采用各自的登录脚本,以便个人帐号信息泄漏。
    • 将各个故事对应的测试脚本导出 .exd 文件。
    • 将多步骤操作序列导出为 .seq 文件。

    基于以上重用性原则,笔者通常会为系统定制好扫描模板,录制登录脚本,手工探索各个故事的操作过程导出为 .exd 文件(测试策略通常建议由公司层面统一规范)。然后通过 CLI 命令执行以上测试脚本。以下是笔者常用的几个 CLI 命令。


    清单 1. 针对某故事的测试命令
    AppScanCMD exec /starting_url http://sampleFVT.com/store1 /scan_template mytemplate.scant  /policy_file c:/scan_scripts/itcs104.policy /login_file jeremy.login   /manual_explore_file c:/scan_scripts/store1.exd /test_only   /report_file c:/scan_scripts/store1_report.pdf /report_type pdf 

    清单 1 命令中的 starting_url 设置了该故事的起始 URL;scan_template 设置了全局通用的扫描配置选项,譬如基于参数导航的设置、通信超时设置等;policy_file 指定了测试策略;login_file 指定了当前测试人员自己的登录序列;manual_explore_file 指定了针对该故事所录制并导出的探索脚本;test_only 限定 AppScan 仅测试该故事,不要自行探测其他 URL;report_file 和 report_type 用来设定输出测试报告。

    通过清单 1 可以看出,这种测试方法下脚本能够最大化重复利用,譬如登录脚本、模板等;其次,这种测试方法效率较高,仅集中测试该故事所包括的 URL;同时由于脚本都拆开后,可维护性也较好,如果该故事的 URL 有变化,仅需要重新录制探测脚本即可以,或者直接手工编辑 .exd 文件;此外,这个测试脚本可以重复执行,这个命令可以通过批处理文件、Junit、Ant 等集成起来重复调用。


    清单 2. 多步骤操作的测试命令
    AppScanCMD exec /scan_template mytemplate.scant /policy_file itcs104.policy   /login_file jeremy.login /multi_step_file c:/scan_scripts/multistepscenario.seq   /multi-step /report_file c:/scan_scripts/store1_report.pdf /report_type pdf 

    清单 2 命令中的 scan_template 设置了全局通用的扫描配置选项;policy_file 指定了测试策略;login_file 设置了当前测试人员自己的登录序列;multi_step_file 设定了多步骤操作序列;multi-step 标志限定 AppScan 仅测试多步骤操作,不再去探索其他 URL;report_file 和 report_type 用来设定输出测试报告。


    清单 3. UAT 环境的测试命令
    AppScanCMD exec /starting_url http://sampleUAT.com/store1 /scan_template mytemplate.scant  /old_host http://sampleFVT.com /new_host http://sampleUAT.com   /policy_file c:/scan_scripts/itcs104.policy /login_file jeremy.login   /manual_explore_file c:/scan_scripts/store1.exd /test_only   /report_file c:/scan_scripts/store1_report.pdf /report_type pdf 

    通常 FVT 阶段完成后,笔者会利用 new_host 和 old_host 命令来重用 FVT 环境的 AppScan 测试脚本进行 UAT 环境的安全测试。譬如清单 3 所示,相比于清单 1 增加了“/old_host http://sampleFVT.com /new_host http://sampleUAT.com”,AppScan 即可以自动将探索和测试阶段的“sampleFVT.com”域名替换为“sampleUAT.com”域名。非常酷的特性,目前只有 CLI 模式下才能使用该特性,图形界面下暂不支持这功能。

    利用 Ant 集成 AppScan Standard CLI 命令

    尽管 AppScan Standard CLI 命令非常灵活方便,但每次都敲入这些命令还是非常繁琐麻烦,且容易出错。实际应用中我们都会把它集成到批处理或者 Ant 一类的集成环境中去。下面笔者跟读者分享如何将 AppScan Standard CLI 命令集成到 Apache Ant(后文简称为 Ant)中。:下文中所有 Ant 示例均在 Ant v1.7 中测试通过,其他 Ant 版本未经测试,读者见谅。

    Ant 是非常强大的基于 Java 的构建工具。它除了包含丰富的任务(Ant Task)外,还支持定制任务。为了演示 AppScan Standard CLI 的易集成性,笔者特编写了集成 AppScan Standard CLI 的 Ant 定制任务,下文将跟读者简介该定制任务的实现及使用方法。


    清单 4. AppScan Standard CLI 任务示例
    <?xml version="1.0"?> <project name="build" basedir="." default="main" >  <property name="workingDir" value="c:/test" />  <target name="declare">  <taskdef name="appscan.execute" classname="com.ibm.appscan.anttask.AppScanStdExec"     classpath="lib/Ant4AppScanStdCLI.jar" />  </target>  <target name="main" depends="declare" >  <appscan.execute baseScan="${workingDir}/scan1.scan" scanLog="true" verbose="true"/>  </target> </project> 

    清单 4 中的 Ant 脚本定制了一个任务“appscan.execute”。Ant 会初始化 Ant4AppScanStdCLI.jar 中的 com.ibm.appscan.anttask.AppScanStdExec 类,Ant 执行到“appscan.execute”任务时将该任务的所有属性通过 set 方法传递给 AppScanStdExec 实例中,然后执行该实例的 execute 方法。


    清单 5. Ant 定制任务类的 execute 方法
    public class AppScanStdExec extends Task {  ...  public void execute() throws BuildException {  try {  validateAttributes();  String cmdString = this.intepreterCMD();  Runtime rt = Runtime.getRuntime();  Process proc = rt.exec(cmdString);  analysisProcessStream(proc.getInputStream());  int exitCode = proc.waitFor();  if(exitCode !=0 )  throw new BuildException(exitStatusCodes.get(String.valueOf(exitCode)));  } catch (BuildException be) {  throw be;  } catch (Exception e) {  e.printStackTrace();  throw new BuildException(e.getMessage());  }  } } 

    清单 5 展示了 Ant 定制任务类的 execute 方法。首先它会检查 Ant 任务中配置的属性,然后将用户配置的属性解析为 AppScan Standard CLI 命令,然后调用 Runtime.exec 方法执行 AppScan Standard CLI 命令。执行过程中的信息会通过 Process.getInputStream 方法获取到并打印到输出中。Process 的命令退出代码会通过 Process.waitFor 方法获取到,如果退出代码不是 0(参见表 2),则打印出对应的错误信息输出到 Ant 的 BuildException 中。清单 4 中的 Ant 示例脚本中,笔者故意指定了错误的 base_scan 文件路径,用来测试 Ant 定制任务类。如清单 6 所示。


    清单 6. 示范 Ant 脚本执行结果
    Buildfile: build.xml declare: main: [appscan.execute] 无法找到基础扫描文件:"c:/test/scan1.scan"  BUILD FAILED D:\Workloc\DeveloperWorks\8_CLI\Ant_AppScan\build.xml:14: Command Line Error 

    可以看出 Ant 定制任务正确打印了 AppScan 的执行信息“无法找到基础扫描文件 ...”,同时也正确捕获了 AppScan 的退出代码为 2 即命令行错误。

    读者可以在本文下载链接中找到 Jar 包和示例 Ant 脚本,修改示例 Ant 脚本实现自己项目中的 AppScan 脚本自动构建测试。下文笔者将展示如何基于 Ant 调用 AppScan Standard CLI 命令测试 Altoro Mutual 网站。

    案例

    下面笔者将跟读者演示如何利用上文介绍的 Ant 定制任务来扫描 Altoro Mutual 中的银行个人自助业务(查看帐号信息、转账等)。笔者会利用向导手工探索银行自助业务的页面,在数据视图检查测试 URL 无误后,将扫描配置导出为 altoromutual.scant 模板文件,将登录序列导出为 jsmith.login 文件,将定制好的开发者精要测试策略导出为 develop_phase.policy 文件,将手工探索出来的所有 URL 导出为 selfbanking.exd 文件。实际工作中,模板文件、测试策略、登录序列只是第一次需要录制,以后仅需要为新的功能故事录制探索文件即可。

    整理好以上测试脚本文件后,我们即可以配置 Ant 脚本将这个故事的安全扫描集成为 Ant 任务,如下文清单 7 所示。


    清单 7. AltoroMutual 安全测试 Ant 任务
    <?xml version="1.0"?> <project name="build" basedir="." default="main" >  <property name="workingDir" value="${basedir}/scripts" />  <target name="declare">  <taskdef name="appscan.execute" classname="com.ibm.appscan.anttask.AppScanStdExec"     classpath="lib/Ant4AppScanStdCLI.jar" />  </target>  <target name="main" depends="declare" >  <appscan.execute scanTemplate="${workingDir}/altoromutual.scant"             policyFile="${workingDir}/develop_phase.policy"             loginFile="${workingDir}/jsmith.login"             manualExploreFile="${workingDir}/selfbanking.exd"             testOnly="true"             reportFile="report/selfbanking_report.pdf"             reportType="pdf"/>  </target> </project> 

    执行该 Ant 脚本,结果如下。


    清单 8 . AltoroMutual 安全测试输出
    Buildfile: build.xml declare: main: [appscan.execute] 有效的输入参数和标志: [appscan.execute] EXEC [appscan.execute] scan_template = 'd:\workloc\developerworks\8_cli\ant_appscan/scripts/al toromutual.scant' [appscan.execute] login_file = 'd:\workloc\developerworks\8_cli\ant_appscan/scripts/jsmit h.login' [appscan.execute] manual_explore_file = 'd:\workloc\developerworks\8_cli\ant_appscan/scri pts/selfbanking.exd' [appscan.execute] policy_file = 'd:\workloc\developerworks\8_cli\ant_appscan/scripts/deve lop_phase.policy' [appscan.execute] report_file = 'D:\Workloc\DeveloperWorks\8_CLI\Ant_AppScan\report\selfb anking_report.pdf' [appscan.execute] report_type = 'Pdf' [appscan.execute] report_file = 'D:\Workloc\DeveloperWorks\8_CLI\Ant_AppScan\report\selfb anking_report.pdf' [appscan.execute] min_severity = 'Informational' [appscan.execute] test_type = 'All' [appscan.execute] verbose = 'False' [appscan.execute] explore_only = 'False' [appscan.execute] test_only = 'True' [appscan.execute] continue = 'False' [appscan.execute] multi_step = 'False' [appscan.execute] scan_log = 'False' [appscan.execute] wait_on_exit = 'False' [appscan.execute] [appscan.execute] 正在启动 AppScan... [appscan.execute] [appscan.execute] 正在新建扫描 ... [appscan.execute] 正在导入扫描模板:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/altoromut ual.scant" [appscan.execute] 正在导入登陆文件:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/jsmith.lo gin" [appscan.execute] 正在导入测试策略:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/develop_p hase.policy" [appscan.execute] 正在导入手动浏览数据:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/selfban king.exd" [appscan.execute] 正在分析"手动浏览"数据。即使指定了 test_only,也将重新发送请求。 [appscan.execute] ... [appscan.execute] 安全性问题: [appscan.execute] [appscan.execute] 高:2 [appscan.execute] 中等:2 [appscan.execute] 低:0 [appscan.execute] 已成功完成。  BUILD SUCCESSFUL Total time: 51 seconds 

    从清单 8 看出,AppScan Standard CLI 命令成功被集成到 Ant 任务中。下面笔者演示如何将此脚本复用到另外一个域名上。如清单 9 所示,仅需要在以前脚本内增加两个属性:oldHost="http://demo.testfire.net" 和 newHost="http://jhe.ibm.com" 即可。


    清单 9. Ant 任务 - 脚本复用到新域名
    <?xml version="1.0"?> <project name="build" basedir="." default="main" >  <property name="workingDir" value="${basedir}/scripts" />  <target name="declare">  <taskdef name="appscan.execute" classname="com.ibm.appscan.anttask.AppScanStdExec"     classpath="lib/Ant4AppScanStdCLI.jar" />  </target>  <target name="main" depends="declare" >  <appscan.execute scanTemplate="${workingDir}/altoromutual.scant"             policyFile="${workingDir}/develop_phase.policy"             loginFile="${workingDir}/jsmith.login"             manualExploreFile="${workingDir}/selfbanking.exd"             oldHost="http://demo.testfire.net"             newHost="http://jhe.ibm.com"             testOnly="true"             reportFile="report/selfbanking_report.pdf"             reportType="pdf"/>  </target> </project> 

    执行清单 9 脚本,其输出如清单 10 所示。可以看出 AppScan 在导入包含旧域名的脚本后自动替换为新域名。该测试的结果跟清单 8 中一样。


    清单 10. 脚本复用到新域名测试输出
    Buildfile: build.xml declare: main: [appscan.execute] 有效的输入参数和标志: [appscan.execute] EXEC [appscan.execute] scan_template = 'd:\workloc\developerworks\8_cli\ant_appscan/scripts/al toromutual.scant' [appscan.execute] login_file = 'd:\workloc\developerworks\8_cli\ant_appscan/scripts/jsmit h.login' [appscan.execute] manual_explore_file = 'd:\workloc\developerworks\8_cli\ant_appscan/scri pts/selfbanking.exd' [appscan.execute] policy_file = 'd:\workloc\developerworks\8_cli\ant_appscan/scripts/deve lop_phase.policy' [appscan.execute] new_host = 'http://jhe.ibm.com' [appscan.execute] new_port = '80' [appscan.execute] old_host = 'http://demo.testfire.net' [appscan.execute] old_port = '80' [appscan.execute] report_file = 'D:\Workloc\DeveloperWorks\8_CLI\Ant_AppScan\report\selfb anking_report.pdf' [appscan.execute] report_type = 'Pdf' [appscan.execute] report_file = 'D:\Workloc\DeveloperWorks\8_CLI\Ant_AppScan\report\selfb anking_report.pdf' [appscan.execute] min_severity = 'Informational' [appscan.execute] test_type = 'All' [appscan.execute] verbose = 'False' [appscan.execute] explore_only = 'False' [appscan.execute] test_only = 'True' [appscan.execute] continue = 'False' [appscan.execute] multi_step = 'False' [appscan.execute] scan_log = 'False' [appscan.execute] wait_on_exit = 'False' [appscan.execute] [appscan.execute] 正在启动 AppScan... [appscan.execute] [appscan.execute] 正在新建扫描 ... [appscan.execute] 正在导入扫描模板:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/altoromut ual.scant" [appscan.execute] 正在导入登陆文件:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/jsmith.lo gin" [appscan.execute] 正在导入测试策略:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/develop_p hase.policy" [appscan.execute] 正在替换主机:"http://demo.testfire.net"-->"http://jhe.ibm.com" [appscan.execute] 正在导入手动浏览数据:"d:\workloc\developerworks\8_cli\ant_appscan/scripts/selfban king.exd" [appscan.execute] 正在以"手动浏览"方式替换主机:"http://demo.testfire.net"-->"http://jhe.ibm.com" [appscan.execute] 正在分析"手动浏览"数据。即使指定了 test_only,也将重新发送请求。 [appscan.execute] ... [appscan.execute] 安全性问题: [appscan.execute] 高:2 [appscan.execute] 中等:2 [appscan.execute] 低:0 [appscan.execute] 已成功完成。  BUILD SUCCESSFUL Total time: 1 minute 59 seconds 

    :细心的读者应该注意到日志中警告“分析手动浏览数据。即使指定了 test_only,也将重新发送请求”。这里的意思是,AppScan 导入 .exd 文件时,会读取该文件中的 URL 并一一发送请求,AppScan 会检查这些 URL 的 HTTP 响应来生成相应的测试变体。因此,我们需要保证 .exd 文件中的 URL 是有效的。如果导入的是无效 URL,AppScan 可能无法检测出该 URL 中的安全漏洞。读者可阅读参考资料列出的“利用 AppScan 定制参数提升脚本的重用性”了解如何利用定制参数提高脚本重用性。

    总结

    本文笔者结合实际项目经验,跟读者分享了如何使用 AppScan Standard CLI 命令进行安全测试。AppScan Standard V8.5 的 CLI 命令行界面得到了很大提升,本文给读者介绍了新 CLI 的命令结构和参数,以及作者实际项目中常使用的几个 CLI 命令及应用场景。同时笔者为 AppScan Standard CLI 编写了 Ant 定制任务,结合案例演示了如何利用 Ant 定制任务来扫描 Altoro Mutual 系统,希望能帮助读者意识到 AppScan Standard CLI 的强大和方便,帮助读者快速将之应用到持续构建中去。鉴于笔者经验有限,若有不及之处,欢迎读者来信交流。

    posted @ 2012-09-27 20:13  ChaunceyHao  阅读(640)  评论(0编辑  收藏  举报
  • 汽车羊毛坐垫长毛
  • 车垫四季通用
  • 御车宝
  • 凯美瑞坐垫四季通用
  • 手编冰丝坐垫
  • 珍珠戒指新款
  • 汽车皮坐垫四季垫
  • 汽车四季坐垫新款
  • 汽车皮坐垫四季通用
  • 汽车羊毛坐垫短毛
  • 包女
  • 汽车亚麻坐垫包邮
  • 汽车布坐垫
  • 汽车布坐垫套
  • 紫风铃亚麻四季坐垫
  • 蒙奇奇汽车
  • 蒙奇奇汽车毛绒坐垫
  • 蒙奇奇坐垫三件套
  • 尼罗河车坐垫
  • 尼罗河手编坐垫
  • 尼罗河四季垫
  • 羊剪绒坐垫
  • 牧宝冬季坐垫
  • 牧宝四季垫正品
  • 牧宝羽绒坐垫
  • 牧宝汽车垫羊毛
  • 高压洗车机
  • 高压洗车器
  • 高压洗车水泵
  • 高压洗车泵
  • 熊猫洗车
  • 洗车器高压220v
  • 洗车器便携高压
  • 高压水枪洗车机
  • 220v高压水枪洗车机
  • 家用洗车水枪高压枪
  • 汽车洗车水枪
  • 虎贝尔洗车水枪
  • 水枪头洗车
  • 洗车水枪水管
  • 洗车水枪套装
  • 洗车水枪接头
  • 佳百丽洗车水枪
  • 洗车工具套装
  • 洗车用品工具
  • 家用洗车工具
  • 汽车洗车工具
  • 洗车设备工具
  • 洗车刷子
  • 现代途胜保险杠
  • 现代新胜达保险杠
  • 保险杠车贴纸
  • 后保险杠车贴纸
  • 前保险杠车贴
  • 雨燕保险杠
  • 后保险杠贴纸
  • 前保险杠贴纸
  • 汽车保险贴纸
  • rav4后保险杠
  • 专业运动文胸htc c715e evo design 4g
  • htc evo 4g a9292
  • htc x515m g17 evo 3d
  • htc one x s720e
  • htc x920e
  • 名牌手表男正品
  • povos 奔腾 pffn3003苏泊尔电热水壶正品
  • tcl tcl电热水壶ta-kb181a
  • 乔邦181j
  • 乔邦不锈钢电热水壶
  • supor 苏泊尔 swf15j3-150
  • 逸动空气滤芯
  • 空气压缩机喷漆
  • 德国车载空气净化器
  • sr927w手表电池
  • cartier手表蓝气球
  • 机械手表男士名表
  • anne klein手表
  • 手表柜台展示柜
  • 女士皮带 头层牛皮
  • 女士皮带 头层纯牛皮
  • jeep皮带 纯牛皮
  • 女皮带 真皮 牛皮
  • 女士皮带 真皮
  • 头层牛皮皮带
  • 女士皮带 时尚
  • 真皮皮带头层牛皮女
  • 女士皮带 包邮
  • 皮带条 头层牛皮
  • 女士皮带 时尚 宽
  • 头层牛皮纯铜扣皮带
  • 女士皮带 纯牛皮
  • 女士皮带头层纯牛皮
  • 女士皮带头层牛皮
  • jeep皮带纯牛皮
  • 女皮带真皮牛皮
  • 女士皮带真皮
  • 女士牛皮皮带包邮
  • 女士皮带时尚
  • 三星微单镜头
  • 三星单反镜头
  • 三星50-200镜头
  • 三星7100镜头保护膜
  • 三星i9210
  • 三星i9210手机套面包蛋糕酸奶机
  • 鸡蛋牛奶面包干饼干
  • 面包片饼干
  • 摩托车机油