使用 CGI 的一个众所周知的主要缺点是网络服务器性能差。但是基于 CGI(主要是 C/C++)的应用程序有多安全?基于 C/C++ 构建的 CGI 架构中是否存在任何重大安全漏洞?
我想知道一些基于 CGI 的网络应用程序/网站的现实生活实现。我知道的一个是 javaranch.com。
我在任何地方都会看到的主要安全漏洞,包括 C/C++,不会使用标准的、开放的 CGI 库,没有阅读它的文档,并且认为你无论如何都是安全的。
安全总是多方面的,而且总是不完整的。各种软件中一直存在漏洞——以前可能被认为是安全的软件。现在我们拥有比 15 年前更多的最佳安全实践。我们有 SELinux 以提高安全性。
当然,问题是——你的应用程序有足够的安全性吗?合理的努力是否能让您获得合理的安全级别?当然,这就是我不使用 C/C++ 的原因,而是使用 Perl。确保我不会在 Perl 中覆盖内存比在 C++ 中要少得多。这是一个安全级别,不涉及实际工作。
CGI 并不比任何其他 WSAPI 更不安全。这完全取决于程序对代码的作用。CGI 所做的只是设置环境变量并处理程序。
许多网站都是基于 CGI 的。许多位于主机上的 PHP 站点都在 CGI 模式下运行 - mod_php 很难在共享环境中使用 - 没有 suid。
一般来说,作为 CGI 运行的性能较低,但安全性更好——您无法访问网络服务器内部(如 mod_perl 和 mod_php),因此使用漏洞更难。如果您使用 cgi-bin,您的非执行文件是不可见的(PHP 程序员的一个常见错误是他们有扩展名为 .inc 的库,因此当直接请求此文件时会显示源代码)。
Perl's taint-checking mode provides a marvelous way to increase security.