【问题标题】:Disadvantages of using CGI scripts written in C for web server-side?在 Web 服务器端使用用 C 编写的 CGI 脚本的缺点?
【发布时间】:2015-03-07 11:17:32
【问题描述】:

我目前正在处理 iPhone 应用程序的简单服务器端,它使用启用了 CGI 脚本的 Apache HTTP 服务器和用 C 编写的 CGI 脚本来处理请求、读取 HTTP 查询字符串并从 SQLite 数据库中插入/选择根据需要。

据我所知,这是一种非常不常见的设置,大多数人用 Perl 或其他东西编写 CGI 脚本,或者根本不使用 CGI 脚本。我会使用其他东西来成为主流,但我非常了解 C 语言中的 CGI 脚本,并且当时不想处理新的东西。人们告诉我使用 C 编写的 CGI 脚本是个坏主意,但当我问为什么时,他们不知道。考虑到我是为一个小程序做的,为什么它不好?

【问题讨论】:

  • CGI 可以用任何语言编写。我见过用 bash 编写的 CGI。
  • bash 中的 CGI 是炮击攻击的主要目标。猜猜纯C至少在那里会更好。 :)

标签: c apache cgi


【解决方案1】:

我认为如果它是一个没有太多复杂代码的简单脚本就可以了。人们可能有以下一些反对意见:

  • 安全性:与解释语言相比,C 没有很多内置的制衡机制。什么会导致解释器在其他语言中抛出错误可能意味着缓冲区溢出导致数据泄漏或 C 中的任意代码执行。

  • 字符串处理:与脚本语言相比,这在 C 语言中通常更棘手且更容易出错(但另一方面,您不会让人们尝试对所有内容都使用正则表达式他们有多合适:P)。

  • 开发努力与回报:许多 CGI 脚本对性能并不重要,主要受 I/O 限制,因此优化 CPU 利用率并不能带来太多好处,或者包含简单的胶水逻辑。用脚本语言编写这样的脚本可能会更快。

【讨论】:

  • 好的,我理解为什么人们会反对 C 处理字符串和内存的方式。但仅凭这些原因并不足以阻止我将它用于我的小脚本;只需要小心:)
  • 只看那些缓冲区大小和逐个。 :)
猜你喜欢
  • 2012-12-18
  • 2017-07-25
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
相关资源
最近更新 更多