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

时间:2008-08-05 15:05:00

标签: security agile

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

如果是每月发布,是否每个月都有商店进行笔试?

4 个答案:

答案 0 :(得分:2)

您的申请域名是什么?这取决于。

由于您使用了“敏捷”这个词,我猜它是一个网络应用程序。我有一个很好的答案。

去买一个Burp Suite的副本(这是“打嗝”的第一个Google结果---一个肯定的认可!);如果你等到十一月,它将花费你99EU,或180美元,或98美元奥巴马元。

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

在每次发布迭代时,在Web应用程序中对每个查询处理程序进行模糊处理是您可以做的第一件事,即在不建立正式的“SDLC”并添加人数的情况下提高应用程序安全性。除此之外,请查看主要Web应用程序安全热点的代码:

  • 仅使用参数化准备的SQL语句;不要简单地连接字符串并将它们提供给数据库句柄。

  • 将所有输入过滤到已知良好字符的白名单(alnum,基本标点符号),更重要的是,从查询结果输出过滤数据,以“中和”HTML元字符到HTML实体(“,”, GT等)。

  • 在查询参数中使用简单整数行ID的任何地方使用长随机难以猜测的标识符,并确保用户X仅通过猜测这些标识符就无法看到用户Y的数据。

  • 测试应用程序中的每个查询处理程序,以确保它们仅在呈现有效的登录会话cookie时才起作用。

  • 打开网络堆栈中的XSRF保护,这将在所有呈现的表单上生成隐藏的表单令牌参数,以防止攻击者创建将为不知情用户提交表单的恶意链接。

  • 使用bcrypt ---以及其他任何内容---来存储散列密码。

答案 1 :(得分:1)

Unit testingDefense Programming和大量日志

单元测试

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

防御编程

我个人称之为偏执狂编程,但维基百科永远不会错( sarcasm )。基本上,您可以在检查所有输入的函数中添加测试:

  • 用户的cookie是否有效?
  • 他目前还在登录吗?
  • 是针对SQL注入保护的函数参数吗? (即使您知道输入是由您自己的函数生成的,您仍将进行测试)

<强>登录

记录所有内容,如疯狂。它更容易删除日志然后添加它们。用户已登录?记录下来。用户发现了404?记录下来。管理员编辑/删除了帖子?记录下来。有人能够访问受限制的页面吗?记录下来。

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

答案 2 :(得分:1)

我不是敏捷开发方面的专家,但我认为将一些基本的自动笔测试软件集成到您的构建周期中将是一个良好的开端。我见过几个可以进行基本测试的软件包,非常适合自动化。

答案 3 :(得分:1)

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

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