关于敏捷开发,测试每个版本的安全性的最佳实践是什么?
如果是每月发布,是否有商店每个月都进行渗透测试?
你的应用领域是什么?这取决于。
由于您使用了“敏捷”这个词,我猜它是一个网络应用程序。我有一个很好的简单答案给你。
去购买 Burp Suite 的副本(这是“burp”的排名第一的 Google 搜索结果——肯定认可!);如果你等到 11 月,它会花费你 99 欧元,或约 180 美元,或 98 美元奥巴马美元。
Burp 用作 Web 代理。您使用 Firefox 或 IE 或其他任何方式浏览您的 Web 应用程序,它会收集您生成的所有点击量。这些命中被馈送到一个名为“Intruder”的功能,这是一个网络模糊器。Intruder 将计算出您提供给每个查询处理程序的所有参数。然后它将为每个参数尝试疯狂的值,包括 SQL、文件系统和 HTML 元字符。在典型的复杂表单帖子中,这将产生大约 1500 次点击,您将通过这些点击来识别可怕的——或者,更重要的是,在敏捷环境中,新的——错误响应。
在每次发布迭代时对 Web 应用程序中的每个查询处理程序进行模糊测试是您可以在不建立正式的“SDLC”并增加人数的情况下提高应用程序安全性的第一件事。除此之外,请查看主要 Web 应用安全热点的代码:
仅使用参数化的准备好的 SQL 语句;永远不要简单地连接字符串并将它们提供给您的数据库句柄。
将所有输入过滤到已知良好字符(alnum、基本标点符号)的白名单中,更重要的是,从查询结果中输出过滤数据以将 HTML 元字符“中和”为 HTML 实体(quot、lt、gt 等)。
在您当前在查询参数中使用简单整数行 ID 的任何地方使用长随机难以猜测的标识符,并确保用户 X 不能仅通过猜测这些标识符来查看用户 Y 的数据。
测试应用程序中的每个查询处理程序,以确保它们仅在提供有效的登录会话 cookie 时才起作用。
打开 Web 堆栈中的 XSRF 保护,这将在所有呈现的表单上生成隐藏的表单令牌参数,以防止攻击者创建恶意链接,这些链接将为毫无戒心的用户提交表单。
使用 bcrypt --- 仅此而已 --- 来存储散列密码。
我不是安全专家,但我认为在测试安全性之前你应该知道的最重要的事实是你试图保护的东西。只有知道要保护什么,才能对安全措施进行适当的分析,然后才能开始测试那些已实施的措施。
很抽象,我知道。但是,我认为这应该是每一次安全审计的第一步。
我不是敏捷开发方面的专家,但我认为将一些基本的自动化渗透测试软件集成到您的构建周期中将是一个好的开始。我已经看到了几个可以进行基本测试并且非常适合自动化的软件包。
单元测试
确保您尽早进行单元测试(例如,密码应该在发送前加密,SSL 隧道正在工作等)。这将防止您的程序员意外地使程序不安全。
防御编程
我个人称之为偏执编程,但维基百科永远不会错(讽刺)。基本上,您将测试添加到检查所有输入的函数中:
日志记录
疯狂地记录一切。删除日志然后添加它们更容易。用户已登录?记录下来。用户发现了 404?记录下来。管理员编辑/删除了帖子?记录下来。有人能够访问受限页面吗?记录下来。
如果您的日志文件在开发阶段达到 15+ Mb,请不要感到惊讶。在测试期间,您可以决定要删除哪些日志。如果需要,您可以添加一个标志来决定何时记录某个事件。