CPSCE Blog

面向方面编程与信息安全的讽刺关系

September 14, 2018

by Bradley C. Watson, Ph.D.,管理信息系统项目主席

软件编程方法来了,大概,虽然还没有被证明,但他们走了. 现有的证据却指向相反的方向, 方法论直到今天都没有过时, 许多想成为程序员的人首先学会使用编程先驱们的方法,这些方法被亲切地称为“意大利面编码”,” or, said differently, write a bunch of lines of code, and pray it works. 这是真的,尽管几十年来一直试图根除这种方法,非常有能力, 非常受人尊敬的理论学家和实践者*. 鉴于在实现普遍接受的软件构建方法方面缺乏最终的成功, in this text, mg不朽情缘游戏网址将朝着目标奋进, 关注最近进入编程方法学领域的新成员:“面向方面的编程”(AOP). 具体地说,mg不朽情缘游戏网址感兴趣的主题将是AOP和信息安全的关系.

开发面向方面编程范例是为了解决横切关注点的问题. For instance, in an organization, 有些人可能按小时计酬, that is, they are hourly workers. 小时工可以在大多数组织的所有职能部门找到-人力资源, finance, marketing, production, etc. 记录小时工的工作时间并不是任何部门职能的组成部分. It is, therefore, 横切关注点——组织中必要的功能,必须跨所有部门执行,但只会分散每个部门的实际工作. 在编程世界中,在AOP出现之前,任何传统方法都无法可靠地处理此类横切关注点.

As it happens, in the world of software, 提供信息安全的功能是一个横切关注点. 在维护信息安全的过程中,程序的任何部分都必须按照这样的方式运行. Which means, 因为面向方面编程的目的是实现处理横切关注点的代码,而信息安全是横切关注点, 那么显而易见的结论是,应该使用AOP来实现软件中的信息安全. 但这里有一个陷阱,一个相当严重的陷阱.

To understand the catch, 有必要了解允许AOP代码处理横切关注点的基本机制:在开发后将代码注入需要支持横切关注点的程序中. In other words, 应用程序程序员开发他们的代码, 忽略诸如信息安全之类的横切关注点. 然后其他程序员创建AOP代码,这些代码被注入到应用程序代码的所有正确位置,以处理横切关注点. 这段代码可以静态注入, 作为编译过程的一部分或动态地, as part of the launch process. 当需要确保运行的是绝对最新版本的代码时,后一种方法是最常用的方法. 注入安全代码就是这样一种情况. 哪个事实导致了使用AOP处理软件安全性的固有问题.

要动态地将代码注入活动的程序,必须存在一种机制来实现这一点. Once there is such mechanism, 然后为注入代码打开了一扇门,这些代码本身要么是某种形式的恶意软件,要么是被恶意软件成功攻击的对象. 所以现在存在的问题是谁在监视守望者.

AOP是目前实现处理横切关注点的代码的最佳答案, such as information security. 但是使用AOP来实现安全强制会为恶意软件进入被保护的程序打开一扇门. 也就是说mg不朽情缘游戏网址需要一个监视者来监视监视者.

  *例如,1968年3月. Edsger Dijkstra, argued very convincingly, 包括使用数学证明,原始编码方法应该是所有程序员的诅咒. As a substitute, Dr. Dijkstra, 在他致美国计算机协会通讯编辑的题为“考虑有害的声明”的非常荣幸的信中,推荐了一种新的编程形式,称为“结构化编程”。. That was 50 years ago. Fast-forward to now, 人们看到的是,结构化编程只是探索“编程方法论”的开始.

References

Dijkstra, Edsger W. (March 1968). “转到被认为有害的声明”. 美国计算机学会通讯(PDF). 11 (3): 147–148.