在敏捷开发商店中是否有用于测试安全性的最佳实践?

时间:2020-03-05 18:37:45  来源:igfitidea点击:

关于敏捷开发,测试每个版本的安全性的最佳实践是什么?

如果是每月发布,那么每个月都有商店进行笔测试吗?

解决方案

回答

我不是敏捷开发方面的专家,但是我可以想象将一些基本的自动笔测试软件集成到构建周期中将是一个好的开始。我已经看到了几个可以进行基本测试并且非常适合自动化的软件包。

回答

我不是安全专家,但是我认为在测试安全性之前,我们应该了解的最重要事实是我们要保护的内容。只有知道要保护的内容,我们才能对安全措施进行适当的分析,然后才可以开始测试那些已实施的措施。

我知道很抽象。但是,我认为这应该是每次安全审核的第一步。

回答

单元测试,防御编程和大量日志

单元测试

确保尽早进行单元测试(例如,在发送密码之前,应先加密密码,并且SSL隧道可以正常工作,等等)。这样可以防止程序员意外使程序不安全。

国防规划

我个人称其为偏执编程,但维基百科从来没有错(讽刺)。基本上,我们将测试添加到函数中,以检查所有输入:

  • 用户的cookie有效吗?
  • 他目前仍在登录吗?
  • 函数的参数是否可以防止SQL注入? (即使我们知道输入是由我们自己的函数生成的,仍然可以进行测试)

记录中

疯狂地记录一切。它更容易删除日志然后添加它们。用户已登录?记录下来。用户找到了404?记录下来。管理员编辑/删除了帖子?记录下来。有人可以访问受限制的页面吗?记录下来。

在开发阶段,如果日志文件达到15+ Mb,请不要感到惊讶。在测试期间,我们可以决定删除哪些日志。如果需要,可以添加一个标志来决定何时记录某个事件。

回答

应用程序域是什么?这取决于。

由于我们使用了"敏捷"一词,所以我猜它是一个Web应用程序。我为我们提供了一个很好的简单答案。

去购买Burp Suite的副本(这是Google在" burp"中排名第一的结果-肯定的认可!);如果我们等到11月,则将花费我们99EU,或者〜$ 180USD,或者$ 98奥巴马币。

Burp充当Web代理。我们使用Firefox或者IE或者其他浏览器浏览Web应用程序,它会收集我们生成的所有匹配。这些点击会被馈送到一个名为" Intruder"的功能,这是一个网络模糊器。入侵者将找出我们提供给每个查询处理程序的所有参数。然后它将为每个参数尝试疯狂的值,包括SQL,文件系统和HTML元字符。在一个典型的复杂表单帖子中,这将产生大约1500次命中,我们将通过这些命中来识别可怕的-或者更重要的是在敏捷上下文中,新的错误响应。

在每次发布迭代中使Web应用程序中的每个查询处理程序模糊不清是我们可以做的第一件事,以提高应用程序的安全性,而无需建立正式的" SDLC"和增加人数。除此之外,请查看代码以获取主要的Web应用安全热点:

  • 仅使用参数化的准备好的SQL语句;永远不要简单地将字符串连接起来并将它们提供给数据库句柄。
  • 将所有输入过滤到已知良好字符的白名单(数字,基本标点符号),更重要的是,从查询结果中输出过滤数据,以将HTML元字符"中和"为HTML实体(","," gt"," gt"等)。
  • 在我们当前在查询参数中使用简单整数行ID的任何地方使用难以猜测的长随机标识符,并确保用户X仅凭猜测那些标识符就看不到用户Y的数据。
  • 测试应用程序中的每个查询处理程序,以确保它们仅在显示有效的已登录会话cookie时才起作用。
  • 打开Web堆栈中的XSRF保护,这将在所有呈现的表单上生成隐藏的表单令牌参数,以防止攻击者创建恶意链接,这些恶意链接将为毫无戒心的用户提交表单。
  • 使用bcrypt ---而不要使用其他任何方式---存储散列密码。