当前位置: 首页 > article >正文

程序测试工具Burp Suite 表格排序和中继器的性能改进

性能是任何软件可用性和效率的关键因素,Burp Suite 也不例外。我们最近专注于在几个关键领域增强 Burp Suite 的性能,并在缩短处理时间、最大限度地减少内存使用量和确保更流畅的用户体验方面取得了重大进展。请继续阅读,深入了解我们在最近发布版本中解决的几个性能问题。

Burp Suite 是一款领先的Web应用程序安全测试工具。它被广泛用于识别和修复Web应用程序中的漏洞。

表格排序

表格是 Burp Suite 的核心组件。Burp 中生成的大多数数据都以表格形式呈现。能够通过排序来处理这些数据是许多用户工作流程的关键。本节详细介绍了我们解决该问题的方法以及可衡量的性能改进。

问题

表格排序的主要问题在于数据检索和排序操作的处理方式。对大型项目文件上的表格进行排序会导致大量缓慢且重复的磁盘检索,从而严重影响性能。当应用多列排序时,需要多达两到三倍的数据检索,这加剧了问题。

最令人沮丧的问题之一是用户界面 (UI) 在这些操作期间冻结。由于排序是在 UI 线程上进行的,Burp 将变得无响应。这种情况也会发生在几乎所有表操作(例如插入和删除)中,因为新值也需要排序。这导致了糟糕的体验,因为用户可能不确定 Burp Suite 是否崩溃了或者它是否仍在处理中。

解决方案

为了解决这些问题,我们进行了一系列技术改进,重点是优化数据检索、从 UI 线程卸载处理以及增强视觉反馈。

  1. 快照和内存缓存:我们对表数据进行了快照,并在单独的线程上对其进行了排序。此方法涉及在排序之前将所有必要的数据检索到内存缓存中。通过这样做,我们减少了从磁盘重复检索数据(有时是同一对象)的需要。
  2. 后台线程排序:通过将大部分排序操作处理移至其他线程,我们能够保持响应迅速的用户界面。排序完成后,我们会将结果传回 UI 线程以更新表格。开发过程中的一个主要考虑因素是谨慎管理多个线程之间的数据完整性。
  3. UX 改进:为了改善用户体验,我们在正在排序的列的标题上添加了旋转动画,以便让用户知道 Burp 正在后台工作。
结果和绩效指标

我们实施的更改显著提高了表格排序性能。以下是一些主要结果:

  • 排序时间减少:对于大型数据集,排序时间大幅减少。这意味着,以前需要几分钟才能完成的大量代理历史记录(超过 250,000 条)排序现在只需几秒甚至更短。
  • UI 响应性:过渡到多线程排序消除了明显的 UI 冻结。即使在密集排序操作期间,界面也能流畅响应。

为了监控性能改进的结果,我们引入了一套测试和仪表板,以反映代码库的变化如何影响 Burp 中的典型工作流程。这不仅使我们能够量化改进的价值,而且还有助于我们防止性能下降。

我们的性能测试证明了这些优势,表明排序时间大幅减少,UI 响应速度提高。这些结果强调了我们方法的有效性以及给用户带来的切实好处。

按多列对大型代理历史记录进行排序的时间

单中继器

Repeater 是 Burp Suite 的核心部分,用于手动修改和重新发送 HTTP 请求 - 它通常是渗透测试人员工作流程的关键。而且,就像网络浏览器一样,随着时间的推移,用户可能会(无意或无意地)得到很多Repeater选项卡,而我们并没有很好地处理它们。

推文显示许多中继器标签

问题

加载 Burp Suite 时,我们以前会为每个 Repeater 选项卡加载一组 UI(用户界面)组件。不幸的是,这意味着如果您的项目文件中有很多 Repeater 选项卡,那么内存使用量和加载 Burp 所需的时间将受到很大影响,因为每组组件都会占用一点内存。

即使您没有主动使用 Repeater,它也可能导致后台出现普遍的 UI 滞后,这会在您使用 Burp 时导致可以理解的挫败感。

解决方案

我们已开展工作,试图通过更改 Repeater 选项卡的内部表示方式来解决这个问题。现在,我们只使用一组 UI 组件,每个 Repeater 选项卡仅保留其各自的选项卡状态,例如您选择的文本、所选编辑器视图和编辑历史记录。这意味着如果您有大量选项卡,则可以节省大量内存。我们现在还更聪明地确保选项卡在第一次被点击之前不占用任何资源。

Repeater 的外观功能应该不会发生改变,希望您唯一会注意到的就是性能的提升!

结果和绩效指标

与表格排序工作一样,我们设置了自动回归测试,以便在性能下降时通知我们。这些测试会跟踪启动包含 300 个 Repeater 标签的项目文件时所花费的时间和内存使用情况。我们还注意到标签操作(例如复制或关闭组标签)总体上也有了显著的改进。

加载包含 300 个中继器标签的项目文件时的内存消耗

我们在内存和性能方面都看到了显著的改进,而且我们也在这里对性能的门槛更加严格,这意味着我们永远不会回到以前的状态。

我们在性能方面做了很多工作。特别是,我们还改进了在消息编辑器中渲染大型响应主体、站点地图过滤速度以及 Intruder 中简单单词列表的内存使用情况。


http://www.kler.cn/news/368387.html

相关文章:

  • MSR寄存器独有的还是共享的
  • vue文件转AST,并恢复成vue文件(适用于antdv版本升级)
  • Linux 进程间通信_匿名管道
  • centos7 使用yum卸载redis3.2版本并安装redis5版本
  • C++——string的模拟实现(下)
  • C++中红黑树的实现
  • golang正则表达式的使用及举例
  • NAT技术和代理服务器
  • Docker 下备份恢复oracle
  • FineReport 分栏报表
  • uniapp使用uni-push模拟推送
  • MySQL 【正则表达式】函数大全
  • 如何用Jmeter做性能测试
  • 构建ECMAScript标准
  • 论文略读Fewer Truncations Improve Language Modeling
  • 玩转springboot之springboot属性绑定原理
  • ESP32-S3-DevKitC-1开发记录帖(2)——与MPU6050一起部署动作识别神经网络
  • 单链表总结
  • Zig 语言通用代码生成器:逻辑,冒烟测试版发布二
  • 学习qmake
  • 配置smaba (Linux与windows通信)
  • GPT打数模——电商品类货量预测及品类分仓规划
  • LeetCode9:回文数
  • golang将指针传给cgo后还能被回收吗?
  • 15-4连续子串和的整除问题
  • Android Studio历史版本下载