3

使用 CGI 的一个众所周知的主要缺点是网络服务器性能差。但是基于 CGI(主要是 C/C++)的应用程序有多安全?基于 C/C++ 构建的 CGI 架构中是否存在任何重大安全漏洞?

我想知道一些基于 CGI 的网络应用程序/网站的现实生活实现。我知道的一个是 javaranch.com。

4

4 回答 4

6

我在任何地方都会看到的主要安全漏洞,包括 C/C++,不会使用标准的、开放的 CGI 库,没有阅读它的文档,并且认为你无论如何都是安全的。

  • 不要重新发明轮子。使用 CGI 库。有些语言有这个内置的(PHP 可能有),有些包含它(想到 Perl),有些需要你从其他地方获取它(C/C++)。确保你知道它是什么,并且你使用它。不要试图自己实现它如果你要问安全,你和我一样,没有资格写。
  • 阅读文档。如果您使用的是完善的库,则会有关于安全问题的文档以及您可以采取哪些措施来避免这些问题。
  • 永远不要假设你是安全的。我很确定我不安全,即使我已经遵循 Perl 的 CGI 库中的所有规则,以及数据库接口库中的规则等。但我仍然认为我不安全,并保持在那里做任何事情时,它都在我的脑海中。如果我成为安全专家,也许我会改变我的假设。还不确定。

安全总是多方面的,而且总是不完整的。各种软件中一直存在漏洞——以前可能被认为是安全的软件。现在我们拥有比 15 年前更多的最佳安全实践。我们有 SELinux 以提高安全性。

当然,问题是——你的应用程序有足够的安全性吗?合理的努力是否能让您获得合理的安全级别?当然,这就是我不使用 C/C++ 的原因,而是使用 Perl。确保我不会在 Perl 中覆盖内存比在 C++ 中要少得多。这是一个安全级别,不涉及实际工作。

于 2008-10-17T04:58:46.880 回答
2

CGI 并不比任何其他 WSAPI 更不安全。这完全取决于程序对代码的作用。CGI 所做的只是设置环境变量并处理程序。

于 2008-10-16T22:13:16.090 回答
0

许多网站都是基于 CGI 的。许多位于主机上的 PHP 站点都在 CGI 模式下运行 - mod_php 很难在共享环境中使用 - 没有 suid。

一般来说,作为 CGI 运行的性能较低,但安全性更好——您无法访问网络服务器内部(如 mod_perl 和 mod_php),因此使用漏洞更难。如果您使用 cgi-bin,您的非执行文件是不可见的(PHP 程序员的一个常见错误是他们有扩展名为 .inc 的库,因此当直接请求此文件时会显示源代码)。

于 2009-04-26T23:42:22.467 回答
0

Perl's taint-checking mode provides a marvelous way to increase security.

于 2009-06-03T16:19:14.077 回答