在敏捷开发中有测试安全性的最佳实践吗?

Translate

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

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

This question and all comments follow the "Attribution Required."

所有的回答

Translate

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

由于您使用了“敏捷”一词,所以我猜它是一个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 ---而不要使用其他任何方式---存储哈希密码。

来源
Translate

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

来源
Translate

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

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

来源
Translate

单元测试, 国防规划还有很多日志

单元测试

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

国防规划

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

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

记录中

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

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

来源