0

我在 A 公司工作,这是一家将我们的平台集成到硬件公司 B 公司的产品的软件公司。在 B 公司的产品上,B 公司的进程正在运行以管理设备,并且在该进程中有一个网络服务器,用于提供设置页面等。我公司的平台在设备上以单独的进程运行。

作为我们整合的一部分,我被要求添加一个网页,该网页将显示我们流程中的一些信息。这很容易通过在我们的进程的文件系统的正确位置生成一个 HTML 文件来添加,公司 B 的网络服务器将很乐意提供该文件。

现在,我被要求向该网页添加更多功能,其中包括一些交互式功能(一个按钮将触发我们流程中的测试)。我的问题是,我没有发现网页上的按钮在我的流程中触发事件。简单的解决方案是在网络服务器上使用 CGI,并让 B 公司的进程在数据被 POST 时将数据发送回我的进程。我的老板多次表示他不喜欢这种解决方案,因为他将开放的 CGI 视为安全漏洞,并希望在产品发布之前完全关闭网络服务器上的所有 CGI。

因此,如果我不能以这种方式在网络服务器进程和我的进程之间进行通信,我需要提出一个不同的解决方案。我已经多次尝试做一些可怕的骇人听闻的事情,比如通过 PHP 将数据写入文件,但我还没有找到可行的解决方案。

所以这是我的两个问题:

1) 是否有任何安全的方法可以将按钮按下从网页传递到具有 root 访问权限且不需要网络服务器具有可发布 CGI 的进程?

2)如果不是,我如何让我的老板相信,打开一个向我们的进程发送数据并且只能触发一些诊断功能的 CGI 是完成他所要求的安全的方法?

4

1 回答 1

0

这完全取决于我会说这些东西的嵌入程度。

如果您可以将网络服务器嵌入到公司 B 代码中,那么您基本上会从软件本身内部调用函数,这可能被认为是比来自单独的网络服务器进程的正常 cgi 调用更大的安全漏洞。

你可以考虑Fast-CGI,看你最喜欢的百科全书,但最后它会在前面留下一个cgi功能。

如果没有任何最终用户登录到系统,我认为 cgi 选项将是最好的可能性,如果您只发布您需要的少数必要功能,禁用网络服务器内的任何其他功能并添加一些代码来验证传递给 cgi 调用的输入 - 可能在调用 Company B 函数之前使用包装器,以确保只能传递预期的数据和其他任何数据(比如可能是 sql 注入、缓冲区溢出等) .) 将被拒绝。

如果用户可以登录并且能够绕过这些东西,那么就不会引入新的安全漏洞,系统可能永远不会像你老板想要的那样安全......只是我的 2c

于 2016-05-23T08:39:33.633 回答