我在A公司工作,A公司是一家软件公司,将我们的平台集成到B公司的产品上,这是一家硬件公司。在公司B的产品上,公司B的流程正在运行以管理设备,并且在该流程中有一个网络服务器,用于提供设置页面等。我公司的平台在设备上单独运行。
作为整合的一部分,我被要求添加一个网页,该网页会显示我们流程中的一些信息。这很容易通过在我们的流程中在文件系统上的正确位置生成HTML文件来添加,公司B的网络服务器很乐意为其提供服务。
现在我被要求在此网页上添加更多功能,其中包括一些交互式功能(一个按钮将触发我们的流程测试)。我的问题是我找不到网页上的按钮触发我的进程中的事件。简单的解决方案是在Web服务器上使用CGI,并让公司B的进程在发送POST时将数据发送回我的进程。我的老板多次表示他不喜欢这个解决方案,因为他认为开放的CGI是一个安全漏洞,并希望在产品发布之前完全关闭网络服务器上的所有CGI。
因此,如果我无法在网络服务器进程和我的进程之间进行通信,那么我需要提出一个不同的解决方案。我做了几次尝试做一些可怕的hacky事情,比如通过PHP将数据写入文件,但我还没有找到可行的解决方案。
所以这是我的两个问题:
1)是否有任何安全的方法可以将按钮从网页传送到具有超级访问权限的进程,而该进程并不要求网络服务器具有可用的CGI?
2)如果没有,我怎么能说服我的老板开放一个CGI,它将数据发送到我们的流程并且只能触发一些诊断功能是一种安全的方式来完成他的要求?
答案 0 :(得分:0)
这一切都取决于我是如何嵌入这些东西的。
如果您可以将Web服务器嵌入到公司B代码中,那么您基本上会从软件内部调用函数,这可能被视为一个安全漏洞,而不是来自单独的Web服务器进程的正常cgi调用。
你可以考虑使用Fast-CGI,看看你最喜欢的百科全书,但最后它会在正面留下一个cgi函数。
如果没有任何最终用户登录系统,我认为如果您只发布所需的一些必要功能,则禁用cgi选项,禁用网络服务器中的任何其他内容并添加一些代码用于验证传递给cgi调用的输入 - 可能在调用Company B函数之前使用包装器,以确保只传递那些可被传播的数据以及其他任何内容(例如sql-injection,缓冲区溢出等.pp。)将被拒绝。
如果用户可以登录并且能够绕过那些东西,那么就没有引入新的安全漏洞,系统可能永远不会像你老板想要的那样安全......只是我的2c