【问题标题】:Do async calls introduce a security vulnerability异步调用是否会引入安全漏洞
【发布时间】:2011-06-28 11:42:08
【问题描述】:
只需阅读需求文档。
其中一个要求是不应有任何异步调用。这似乎是一项安全要求。
问题是使用异步调用的安全漏洞是什么?还是有其他理由禁止他们?
所有传输都通过 Https/SSL。调用是 2 个系统之间的 Web 服务。
【问题讨论】:
标签:
c#
web-services
security
asynchronous
【解决方案1】:
异步调用本质上没有任何问题,尽管它们可能更难处理。
【解决方案2】:
我唯一能想到的是,可能有轻微的可能性,即“已完成”事件可能被欺骗,从而将恶意数据提供给您的应用程序。
但是,我原以为这种可能性很小。
【解决方案4】:
异步调用,定义为进程中的一个线程派生另一个线程来进行调用并在父线程继续其业务时侦听结果,与同步进行的同一调用一样安全。从进程的外部观察者的角度来看,两者之间的唯一区别是侧线程是在等待调用结果时被阻塞的线程,而不是主线程。新线程获得一个新的堆栈和执行指针,但与进程的所有其他线程共享堆,线程可以通过引用访问其他线程堆栈中的变量。它是同一个程序,在同一个内存空间中执行,只是它的代码从两个地方而不是一个地方执行。
此外,可能无法编写没有任何异步操作的 C# 程序;运行时中内置了许多此类操作。例如,垃圾收集和运行时用来与各种 I/O 层对话的线程。事件驱动的 UI 编程是重线程的;每当用户执行某项操作时,运行时的“UI 线程”都会调用程序的“主线程”;否则它只是在等待。