不要低估数据处理的影响

by

CAST-Don 't-underestimate-the-impact-of-data-h和ling-code-quality适用于企业IT应用, 这都是关于处理通过多种类型和大量代码定义的数据. 然后,用于数据处理的代码行数足够高,足以封装大量软件bug,这些bug等待特定事件破坏IT系统并影响业务.

即使宝博体育app下载可以说一个错误就是一个错误,它会在它发生的时候被修复, 与数据处理相关的bug不应该被低估 这有几个原因:

  1. 在组成应用程序的数百万行代码中,这样的错误通常不容易发现. 它们只能由在其他地方定义的一个语句构成, 使使用它的某些特性不被立即发现. 它们还可以由与给定数据流关联的给定控制流的执行产生.
  2. 其中一些可能会存在很长一段时间,永远不会发生. 问题是要识别哪些属于这一类,然后关注其他类别.
  3. 它们可以被不容易识别的特定条件的结合激活.
  4. 当问题发生时, 这对业务数据的影响可能非常严重:应用程序可能会停止, 数据可能被损坏, 最终用户和客户满意度会下降.
  5. 结果并不总是清晰可见的,在这种情况下,很少有用户能发现它们.

问题是分布式

问题可能隐藏在应用程序代码的任何地方. 风险管理 方法可以帮助选择最合理的应用领域,并减少搜索的范围. 然而, 在大多数情况下, 检测此类潜在问题需要能够检查从一个组件流向另一个组件的数据的类型和结构, 或者从一层到另一层, 以及用您选择的编程语言实现的算法. 这给每个人都带来了麻烦.

为什么虫子会突然激活?

激活bug的因素有很多:

  1. 概率随着代码行数的增加而增加.
  2. 一个组件执行得越多,它的bug就会被激活得越多.
  3. 代码修改得越多,意外行为发生的可能性就越大.
  4. 数据和处理之间的低解耦使得对数据的任何更改都会影响代码.
  5. 市场压力给开发团队带来压力. 快速工作通常是创建新bug和激活现有bug的好方法!
  6. 实现业务规则的算法可能很复杂,并且分布在多个组件上, 促进bug的发生.
  7. 在整个应用程序实现中,功能数据演进并不总是被考虑在内,它可能会使运行良好的代码以一种不稳定的方式运行.

当多个因素同时出现时,最大的挑战就来了——这对任何开发团队来说都是一个困难的挑战!

各种各样的问题

可能导致与数据处理相关的问题的情况列表并不短. 例如,在以下情况下,数据库访问可能会变得脆弱:

  1. 数据库表由几个组件修改. 数据修改通常通过使用特定的例程来进行更新, 插入, 并删除一个特定的API或一个数据层,以保持数据完整性进行充分测试.
  2. 与数据库字段相比,主机变量大小定义不正确. 一些查询可能会获得比预期更高的数据量. 或者在数据库结构中进行了更改,但没有传播到应用程序的其他部分.

当操作变量和参数时,潜在的问题可能是:

  1. 类型不匹配通常是潜伏的情况. 例如, 它可以在两个兼容的数据块之间发生隐式转换时发生, 比如在不同的SQL方言中发现的那些, 将不正确的值注入数据库. 在COBOL程序中,当字母数字字段被移动到数字字段时,也可以发现类似的情况, 如果目标变量在计算中使用或只是在计算格式中使用,将导致异常终止. c++类指针之间的不当强制转换(例如:从基类到子类)可能会导致数据丢失和通过I/O传播的数据损坏.
  2. 当将一个变量移动到另一个变量时,如果没有控制变量大小,则进行数据截断. 如果使用目标变量来传输信息,则可能会丢失部分值.
  3. 在函数或程序调用中,调用方发送的参数与预期参数之间不一致. 当在函数或程序接口中所做的更改没有在所有调用方中移植时,就会发生这种情况, 使它们终止或损坏数据.

后果是什么?

不幸的是,当这些bug被激活时,会有不止一种类型的后果. 应用程序的一大风险与它所操纵的数据的损坏有关——最糟糕的情况是损坏正在整个it系统中蔓延. 一般来说,这会影响用户和业务.

我记得在银行应用程序中出现过这样的情况. 正当一切正常时,电话响了:“嗨, 我的周报上的数字看起来不太对. 我检查过了,但好像有问题. 你能检查一下你那边吗?"

好吧, 宝博体育app下载搜索了生成报告的程序,但没有找到任何有趣的信息. 宝博体育app下载检查了它的输入,发现值不正确. 然后宝博体育app下载研究了产生这些输入的程序, 最后,宝博体育app下载在第三个程序中找到了问题的原因——一组变量的值没有正确计算.

幸运的是,问题被发现并修复了. 更严重的情况发生在非常小的错误悄悄地悄悄地安装在IT系统上的时候. 它们太小或太分散,无法指出来. 例如, 一些不恰当地截断或四舍五入的十进制值似乎是一个小问题, 但最后, 这个总数可能很可观!

另一个结果与应用程序行为有关. 不良的开发实践会迅速导致应用程序 古怪的行为有时终止. 最后, 一些问题, 如缓冲区溢出, 如果数据暴露给终端用户,甚至会导致安全漏洞吗, 特别是在web应用程序中.

手动搜索 ...

仅通过手动和孤立的操作查找与数据处理相关的问题时,很少发现和预期这些问题. 需要查看的代码量, 要检查的数据结构的数量, 需要考虑的复杂业务规则, 还有bug的细微之处(有时似乎是邪恶的!)是严重的障碍,因为开发人员无法花太多的时间来尝试和修复可能永远不会发生的问题.

... 或者自动化系统级分析?

检测这类问题的最有效方法是使用CAST AIP等工具分析整个应用程序软件,将有关数据结构的发现与代码逻辑关联起来. 可以确定谁在代码中调用谁, 并且可以自省数据流中交互的组件. 因此,可以更快地进行问题检测,帮助开发人员保护代码的安全. 它可以自动地定期检查应用程序,而不会干扰开发团队的活动, 使他们能够以较低的成本管理预防工作.

 

杰罗姆Chiampi
杰罗姆Chiampi 产品负责人
杰罗姆Chiampi是CAST的产品负责人,负责帮助客户利用软件智能产品来降低软件风险. 他在软件行业有20年的工作经验,是一名受过培训的软件开发工程师,擅长评估软件和应用程序安全.
加载更多的评论
谢谢你的评论! 你的审查必须首先得到批准
你已经提交了这个项目的评审
|
()