标签: cgi

将二进制数据写入c#中的stdout?

我正在尝试用c#编写一个快速的cgi应用程序.我需要到stdout流并写一些二进制数据.我唯一能找到的就是Console.Write,它接受文本.我也试过了

Process.GetCurrentProcess().StandardOutput.BaseStream.Write 
Run Code Online (Sandbox Code Playgroud)

这也不起作用.这甚至可能吗?

c# cgi

6
推荐指数
2
解决办法
3292
查看次数

CGI脚本中的纯文本密码是安全漏洞吗?

我已经读过你的网络服务器出了问题,这可能导致在网络浏览器中将PHP脚本显示为纯文本文件; 因此,我将大多数PHP脚本移动到Web根目录之外的目录中.现在我一直想知道我的cgi-bin中的CGI脚本是否会发生同样的情况.

我主要关心的是一个包含MySQL数据库用户名和密码的脚本.如果这是一个可能的安全漏洞(至少就数据库内容而言),是否有办法将敏感数据放在不同的位置并从那里获取(如将其保存在不同目录的文件中并阅读它来自那个文件,例如)?我的脚本是用Perl btw编写的.

security perl webserver cgi cgi-bin

6
推荐指数
1
解决办法
1420
查看次数

如何使用C++ CGI脚本?

我目前正在我的大学注册一个Web应用程序课程,我们正在学习cgi脚本.我很难学习如何实现我的CGI脚本.当我点击我的链接时会弹出一个窗口,要求我下载helloworld.cgi文件而不是重定向.

HTML:

<html>
    <body>
        <a href="/user/local/apache2/cgi-bin/helloworld.cgi">click me</a>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

C++:

#include <iostream>

using namespace std;

int main(){
    cout << "Content-type: text/html" << endl;
    cout << "<html>" << endl;
    cout << "   <body>" << endl;
    cout << "       Hello World!" << endl;
    cout << "   </body>" << endl;
    cout << "</html>" << endl;

    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

CGI脚本存储在 /user/local/apache2/cgi-bin/helloworld.cgi

html c++ cgi

6
推荐指数
2
解决办法
1万
查看次数

CGI ::客户之间的会话共享会话!

当我尝试这个时:

while (my $cgi = new CGI::Fast) {
    ...
    my $session = CGI::Session->new(undef, $cgi);
    ...
 }
Run Code Online (Sandbox Code Playgroud)

我发现不同的客户正在进行相同的会话!什么会导致这个奇怪的会话共享?

编辑:我无法可靠地重现这一点,但在我的测试中,我看到过从浏览器中删除会话cookie,刷新页面以及(使用Firebug的Net窗格)看到我没有发送cookie的情况.请求,但在响应中使用会话ID 获取Set-Cookie !由于使用FastCGI,可能会在内存中出现问题?

(注意:我从这个问题的早期版本中删除了第二段代码,因为我不再确定它是否相关)

编辑:http://osdir.com/ml/web.fastcgi.devel/2004-02/msg00007.html似乎描述了我所看到的行为

编辑: 如上面的osdir.com帖子所述,FCGI.pm包含以下代码:

for (keys %FCGI::ENV) {
    $ENV{$_} = $FCGI::ENV{$_} unless exists $ENV{$_};
}
Run Code Online (Sandbox Code Playgroud)

这看起来很明显是我眼中的缺陷.只要当前请求不为给定变量提供值,它就会从环境变量的持久副本复制到脚本可见的环境副本中.因此,如果请求没有cookie,那么它将找不到定义的HTTP_COOKIE,因此它将为脚本提供发送它们的最后一个请求的cookie,这意味着其他会话!我不明白这段代码怎么可能是正确的,这是一个非常高度使用的模块!

perl cgi fastcgi

6
推荐指数
1
解决办法
670
查看次数

脚本格式错误的标题.错误的标头= HTTP/1.1 302找到

我有一个C++程序充当CGI脚本,我目前正在使用Cgicc为我做一些解析和格式化(虽然它可能会在某些时候被替换).在构建我的响应时,我会使用cgicc::HttpResponseHeader,这将创建类似的东西

HTTP/1.1 302 Found
Location: www.bla.com
Run Code Online (Sandbox Code Playgroud)

这看起来很标准.然而,Web服务器对此感到窒息,给了我一个

<...> malformed header from script. Bad header=HTTP/1.1 302 Found: script.cgi
Run Code Online (Sandbox Code Playgroud)

我发现了如何解决这个问题:

  1. 删除该HTTP/...
  2. 添加一条线 Status: 302 Found

事实上,这正是这样cgicc::HttpRedirectHeader做的.我现在有两个问题:

  1. 这条线HTTP/1.1 302 Found不标准吗?
  2. 如果不是,为什么cgicc::HttpResponseHeader这样做?如果是,为什么我的网络服务器会窒息?

注意我不是在寻找解决这个问题的方法,我知道如何做到这一点.我只想了解最新情况.

干杯Ole

cgi http

6
推荐指数
1
解决办法
3456
查看次数

CakePHP,CGI和mod_rewrite

我必须在具有CGI-PHP的环境中运行我的CakePHP 2.1应用程序,并且无法声明apache别名.我想用mod_rewrite将请求重定向到子域到CakePHP,但这没有用.

当前设置

  • Webroot是 ~/user/public_html
  • CakePHP在 ~/user/public_html/cakephp/
  • 应该要求CakePHP dev.mydomain.tld

我到现在所拥有的是(所有路径相对于webroot):

  • ~/user/public_html/.htaccess

    RewriteEngine on
    Options +FollowSymlinks
    RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC]
    RewriteCond %{REQUEST_URI} !/$
    RewriteCond %{DOCUMENT_ROOT}/cakephp/app/webroot%{REQUEST_URI}/ -d
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R,L]
    RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC]
    RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC]
    RewriteRule ^(.*)$ /cakephp/app/webroot/$1 [L]
    
    Run Code Online (Sandbox Code Playgroud)
  • ~/user/public_html/cakephp/app/webroot/.htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
    
    Run Code Online (Sandbox Code Playgroud)

问题

请求以某种方式未正确路由(应用程序在我的开发环境中运行时没有问题,PHP作为模块和/cakephp/app/webroot/级别的虚拟主机).当我请求主页时,dev.mydomain.tld我只得到一个错误,Cake告诉我,CakephpController丢失了.

调试信息

  • $_SERVER调试的有趣部分作为第一行/cakephp/app/webroot/index.php

      [REDIRECT_REDIRECT_REDIRECT_STATUS] => 200
      [REDIRECT_REDIRECT_STATUS] => 200
      [REDIRECT_HANDLER] => php-script
      [REDIRECT_STATUS] => On …
    Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite cgi cakephp cakephp-2.1

6
推荐指数
1
解决办法
1727
查看次数

Perl CGI通过Web浏览器下载文件

需要一些可以从服务器机器下载文件的cgi-perl脚本.EX:点击下载链接,它将打开一个"另存为"窗口,允许我将文件保存在本地计算机上.

我使用CGI创建了一个网页,使用这个我将上传文件到服务器并运行perl脚本将其转换为其他格式(直到这里我完成了).现在我需要将此文件恢复(下载回)到系统.

#!/usr/bin/perl
#print "Content-type: text/html\n\n";
my $filepath='/upload/testing.pm';

    print "Content-Type: text/html\n\n";

    open("DOWNLOADFILE", "<".$filePath);
    while($fileContents = <DOWNLOADFILE>) {
        print $fileContents;
    }
print "Content-Type: text\n";
print "Content-Disposition: attachment; filename='testing.pm'\n";
print "Content-Description: File to download\n\n";
    close DOWNLOADFILE;
Run Code Online (Sandbox Code Playgroud)

将文件从我的机器(客户端)上传到服务器机器,在那里我有一个perl脚本,它将文件转换为另一种格式,并将新转换的文件保存到目录ex:/ upload->直到这里我完成了脚本编写.

现在我需要使用浏览器将此文件下载回客户端计算机.在这种情况下,我试图将testing.pm文件下载回客户端计算机.

apache perl cgi web

6
推荐指数
2
解决办法
1万
查看次数

urllib中的http://www.ssa.gov/cgi-bin/popularnames.cgi的(可能是基本的)网络抓取

我是Python(和网络抓取)的新手.让我问你一个问题.

许多网站实际上并未在Firefox或其他浏览器中报告其特定URL.例如,社会安全管理员显示具有等级的流行婴儿名字(自1880年以来),但当我将年份从1880年改为1881年时,网址不会改变.它是不断的,

http://www.ssa.gov/cgi-bin/popularnames.cgi

因为我不知道具体的URL,所以我无法使用urllib下载网页.

在此页面源中,它包括:

<input type="text" name="year" id="yob" size="4" value="1880">

所以,假设我可以控制这个"年"值(比如"1881"或"1991"),我可以解决这个问题.我对吗?我还是不知道怎么做.

有人可以告诉我解决方案吗?

如果您了解一些可能有助于我学习的网站,请告知我们.

谢谢!

python firebug cgi urllib web-scraping

6
推荐指数
1
解决办法
1355
查看次数

分析超时的Perl CGI脚本

我有一个Perl CGI应用程序,有时超时,导致它被Apache杀死,并将504 Gateway Time-out错误发送到浏览器.我试图使用NYTProf来描述这个应用程序,但我无法读取配置文件数据:

 $ nytprofhtml -f www/cgi-local/nytprof.out
Reading www/cgi-local/nytprof.out
Profile data incomplete, inflate error -5 ((null)) at end of input file, perhaps the process didn't exit cleanly or the file has been truncated  (refer to TROUBLESHOOTING in the documentation)
Run Code Online (Sandbox Code Playgroud)

我正在使用sigexit=1NYTProf选项.这是重现问题的最小CGI脚本:

#!/usr/bin/perl -d:NYTProf

sleep 1 while 1;
Run Code Online (Sandbox Code Playgroud)

perl cgi http-status-code-504 devel-nytprof

6
推荐指数
1
解决办法
536
查看次数

"Windows错误:提供程序DLL无法正确初始化"导入冻结的wxpython应用程序中的cgi模块

我有一个冻结的wxpython应用程序的用户获取附加的屏幕截图.

错误消息是"Windows错误:提供程序DLL无法正确初始化"

从暂停的视频中截取的屏幕截图是我从他们那里得到此错误消息的唯一方法,因为整个事情立即消失(包括创建此DOS窗口以捕获stderr,此消息出现在哪里).IE python在它真正开始之前就已经死了.

回溯指向我在controller.py第14行的代码.

这条线是

import cgi

出于某种原因,似乎cgi在导入期间调用随机(为什么会这样?)并且出于某种原因,由于某些DLL原因,这是失败的.

有线索吗?

注1:此应用程序适用于数百个其他Windows和Mac用户.所以就好像我不提供某些不仅仅是因为这个用户的机器而出于某种原因的东西.

注2:使用bbfreeze创建可执行文件,使用以下配置:

 f = Freezer(distdir = distdir,
            includes = ['wx.lib.pubsub.core.kwargs.*',
                        'wx.lib.pubsub.core.*',
                        'dbhash',
                        'platform']
            )
Run Code Online (Sandbox Code Playgroud)

我不确定我还会在这里放什么.'CGI'?'随机'?

截图

python cgi wxpython

6
推荐指数
2
解决办法
2816
查看次数