Articles of cgi

如何正确地禁用WHM上的guestbook.cgi脚本cgi脚本

经过PCI扫描发现guestbook.cgi存在风险,我想禁用WHM安装的cgi-scripts(v11,在CentOS5上运行)。 我希望尽可能使用WHM Web界面来“正确地”执行此操作(因此,此configuration可以保留更新并且易于复制)。 我迄今为止所尝试的东西都不令人满意: chmod 0 /usr/local/cpanel/base/cgi-sys/guestbook.cgi chattr +i /usr/local/cpanel/base/cgi/guestbook.cgi =在访问example.com/cgi-sys/guestbook.cgi时引发500内部服务器错误,并可能干扰自动更新 WHM | 包| functionpipe理器| 编辑function列表 禁用CGI中心 禁用的电子邮件脚本(cgiemail,formmail) 禁用简单的留言 已禁用高级访客 =访问example.com/cgi-sys/guestbook.cgi时没有变化(HTTP200没有给出用户名) 我searchforums.cpanel.net,这通常是相当不错,但我找不到一个没有不良副作用的答案。

PHP作为CGI二进制与PHP作为Apache模块

将PHP作为CGI二进制文件运行相比,将PHP作为Apache模块运行有什么好处? 在那儿: 安全性好处? 稳定性好处? 性能好处? 我一直安装和使用PHP作为Apache模块,所以我很好奇,是否有任何理由让我将PHP作为CGI二进制文件用于未来的工作。 谢谢!

在大规模的Apache2服务器上使用CGI有什么好处,还是应该使用FASTCGI?

我有一个用PHP完成的Web产品,理论上应该支持很多用户。 问题是,我刚刚离开了Apache,发现它只是作为CGI运行。 这是非常错误的,我应该做的fastcgi或只是把它保持原样?

在CentOS 7上使用Apache / Httpd运行Perl CGI脚本

我的CGI Perl脚本CentOS 7没有正确运行,它们显示为纯文本或者出现服务器错误。 我一直把我的脚本放入默认的/var/www/cgi-bin目录中,没有运气。 我试图把CGI脚本放到/var/www/html/another-dir但是它们只是以纯文本forms出现。

如何添加池到FPM(nginx)没有重新加载/重新启动fpm本身?

我build立一个环境(在Ubuntu 10.04.02机器上)处理一个网站与许多(应该至less支持1000)子域,其中每个子域,由不同的FPM池,与不同的用户。 没有什么新鲜的 我的问题是创build(和启动)一个新的FPM池,而不必重新加载/重新启动FPM,这将导致(我知道,非常快)的停机时间。 我写了一个python守护进程,当需要的时候: 创build系统用户 设置子域的Web根目录 创buildsubdomain.conf到我的/etc/php5/fpm/fpm.d/文件夹中 我search了一下,但我没有find一种方法来调用fpm使用一个池,这可能是一个'临时'的解决scheme:主要的fpm实例运行所有的池,evey新的获得自己的fpm实例,然后用cron停止,每周/每月/ dontknowyet重新加载fpm 如果没关系,服务器运行在nginx上,configuration为使用unix socket到fcgi,这是我的nginxtestingconfiguration: server{ listen 80; server_name ~^(?<domain>.+)\.test\.local$; # foo.test.local > myapp_foo root /var/www/myapp/subdomains/myapp_$domain/htdocs; location / { index index.php; } location ~* \.(gif|jpg|png|ico)$ { expires 30d; } location ~ \.php$ { fastcgi_pass unix:/var/web-sock/myapp_$domain-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ..和我的子域 – fpm.conf: [myapp_foo] listen = […]

在Apache服务器上通过CGI启动一个根级进程的最安全的方法是什么?

问题是:我有一个脚本定期通过cron 作为root运行 ,但是我想通过网页给人们一种asynchronous启动的方式。 (脚本将被写入,以确保它不会运行重叠的实例等。) 我不需要用户login或有一个帐户,他们只需点击一个button,如果脚本准备好运行它将运行。 用户可以为脚本select参数(大量过滤为input),但为了简单起见,我们会说他们只是有button来select按下。 作为一个简单的testing,我已经在cgi-bin中创build了一个Python脚本。 将它chown到root:root,然后将“chmod ug +”应用到它没有得到所需的结果:它仍然认为它有Web服务器帐户的有效组…从我可以告诉这不是允许。 我读过用一个编译好的cgi程序包装它会做这个工作,所以我创build了一个调用我的脚本(它的权限恢复正常)的C包装器,并给了可执行文件根权限和setuid位。 这工作…脚本运行,就像根运行它。 我的主要问题是,这是正常的(需要二进制包装完成工作),这是做到这一点的安全方式? 这不是面向世界的,但我仍然想学习最佳实践。 更广泛地说,我经常想知道为什么编译后的二进制文件在实践中比脚本更“可信”呢? 我想你会相信一个文件是一个神秘的二进制可读的文件。 如果攻击者可以编辑一个文件,那么你已经遇到了麻烦,如果是一个你不能轻易检查的文件。 简而言之,我希望这是在这个基础上的另一种方式。 你的想法?

Apache:权限被拒绝:'/var/www/html/cgi-test/first.pl'的exec失败

所以,我是新来的CGI / Perl,我试图将一个基于Perl的Web应用程序移动到一个新的服务器。 我的新服务器是运行Apache HTTPD 2.4.6的CentOS 7。 我试图从一个HTTP请求获得一个基本的Perl CGI工作。 Web请求返回“500内部服务器错误” 错误日志显示“权限被拒绝”: [Tue May 12 16:56:44.604660 2015] [cgi:error] [pid 12302] [client 10.0.2.2:56693] AH01215: (13)Permission denied: exec of '/var/www/html/cgi-test/first.pl' failed [Tue May 12 16:56:44.604708 2015] [cgi:error] [pid 12302] [client 10.0.2.2:56693] End of script output before headers: first.pl 我的CGI脚本位于/var/www/html/cgi-test/first.pl 它看起来像这样: #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World."; 在cgi-test目录中,权限如下所示: […]

如何通过fcgiwrap / nginxdebuggingCGI

我通过与nginx连接的fcgiwrap提供可执行脚本(主要是C语言)。 由于脚本已经编译,所以在编译过程中我可以得到编码错误,但是有时候我会收到CGI错误 An error occurred while reading CGI reply (no response received) 有没有任何debugging方法来确定CGI请求/处理有什么问题? 我怎样才能设置一个debugging系统将错误提交到nginx日志?

Windows的Apache 2.2痛苦地执行CGI缓慢

我最近在我们的Windows XP个人电脑上设置了Apache 2.2和git,以便使用https://git.wiki.kernel.org/index.php/MSysGit:GitWeb上的设置进行gitweb访问。正如wiki上所述,只有版本的Perl似乎与编码的方式与gitweb一起使用的MSysGit。 ActivePerl和StrawberryPerl没有实现某些必需的function,所以另一个解释器不是一个选项。 C:\Program Files\Git\bin>perl.exe –version This is perl, v5.8.8 built for msys 在任何情况下,它被设置,它的工作原理,但由于某种原因,每个页面加载大约有10秒延迟。 为了解决这个问题,我做了一个简单的helloworld.cgi,并把它放在gitweb.cgi旁边的目录中。 它被设置为使用与gitweb相同的perl解释器: #!C:\Program Files\Git\bin\perl.exe print "Content-type: text/html\n\n"; print "Hello, world!\n"; 该脚本在服务器上执行的时间也超过了10秒。 如果我启动一个命令提示符,并用相同的perl可执行文件直接执行它,它会立即执行。 mod_cgi被加载到Apacheconfiguration中,我正在使用为我的系统修改的git wiki上显示的configuration节: # Config to make the gitweb CGI available through Apache. Alias /git "C:/Program Files/Git/share/gitweb" <Directory "C:/Program Files/Git/share/gitweb"> AddHandler cgi-script .cgi <Files ~ "\.cgi$"> Options +ExecCGI </Files> […]

Apache 2.2 CGI超时configuration

我有一个默认的Apache 2.2系统设置与Perl CGI脚本目录configuration如下: ScriptAlias /jarvis/ "/opt/jarvis/cgi-bin/" 除了我的一个脚本需要10分钟以上的处理,由于各种原因,在这里什么都不打印。 Apache似乎有10分钟(600秒)的CGI脚本运行时间 – 如果在这个时间框架内脚本没有输出,那么脚本将被终止并向浏览器/客户端发送一个500响应。 消息: [Thu Apr 23 13:57:53 2009] [warn] [client 127.0.0.1] Timeout waiting for output from CGI script /opt/jarvis/cgi-bin/jarvis.pl 出现在一个系统(Ubuntu,通过apt-get安装)的日志中,但不在另一个系统上(Windows,通过软件包下载安装)。 我的问题是 – 在Apache 2.2中是否有任何configuration允许我运行超过10分钟的脚本而不会被杀死? 编辑 定期写出日志消息避免了这个错误 – 所以每隔几分钟写一条日志消息就可以确保长时间运行的进程不会被终止。 我最终通过在客户端上实现一个进度条并让我的脚本写入一个“。”来解决我的问题。 每隔一段时间更新一次吧。 谢谢,杰米