标签: cgi-application

如何从命令行运行CGI :: Application运行模式?

我在我的CGI :: Application web-app中有一个运行模式,我希望能够从命令行触发,这样我就可以自动执行它.从web-app的角度来看,它会进行一些处理,然后通过电子邮件发送结果.

从Web界面调用时,它会传递一组参数(电子邮件地址,要运行的查询,日期等),因此需要传入这些参数.

如何构建对CGI :: Application应用程序的调用,就像我从Web上运行它一样?

perl cgi-application

5
推荐指数
2
解决办法
4029
查看次数

如何使用mod_perl和CGI :: Application提供临时文件下载?

我的网络应用程序mod_perl使用CGI :: Application 在Apache上运行.我想提供生成文件的下载.在过去(在我们使用mod_perl和CGI :: App之前)我只是假设一个csv文件STDOUT生成它.现在我正在进行一些改进 - 使用Spreadsheet :: WriteExcel创建一个Excel电子表格 - 我似乎无法从文件句柄中打印出来.

sub export_list {
  my $self = shift;

  binmode(STDOUT);
  my $str;
  open my $fh, '>', \$str;
  my $workbook = Spreadsheet::WriteExcel->new($fh);
  my $worksheet = $workbook->add_worksheet();

  $worksheet->write_col(0,0, ['some','data','here']);
  warn $str;
  return $str;
}
Run Code Online (Sandbox Code Playgroud)

输出只是一个空白响应,警告也是空白.

我用来将电子表格写入文件句柄的方法非常直接来自文档,所以我认为问题是由于我的一些CGI :: App noobery.文档建议的文件句柄方法,并mod_perl证明也没有结果.

我想我应该提一下我在Windows上运行,而我目前的解决方法是创建一个文件并为用户提供一个链接.然而,这会带来更多问题,例如清除目录以及何时执行此操作,以及访问生成的文件的身份验证.

建议?尖刻的批评?

apache perl mod-perl download cgi-application

5
推荐指数
1
解决办法
1123
查看次数

对Perl CGI :: Application的身份验证系统的建议

我正在使用CGI :: Application构建一个Perl应用程序来显示软件工具,并希望允许用户在工具上添加评级和注释.理想情况下,用户需要注册才能发布.我确信这是一个相当普遍的要求,并且必须有现成的"开箱即用"解决方案,我可以使用这些解决方案来节省一些编码和重新发明轮子.如果没有,我有三种可能的解决方案:

1)在此处扩展代码:http://www.perlmonks.org/?node_id = 622071以添加认证系统的缺失部分

2)利用我们的维基; 让用户登录并在wiki上发布评论或者只是利用登录系统来确保只有已注册的wiki用户才能发帖

3)使用其他一些身份验证协议并从头开始自己动手.

有没有人对这些选项有任何想法或经验?

authentication perl cgi-application

5
推荐指数
1
解决办法
1190
查看次数

如何防止跨站请求伪造攻击?

我们在我们的产品上运行Burp Suite并发现了一些安全漏洞。该工具检测到一些易受跨站请求伪造攻击 (CSRF) 攻击的 CGI 文件。

像往常一样,我在 CPAN 上搜索 CSRF 保护模块并找到了CGI::Application::Plugin::ProtectCSRF

我想知道如何以通用方式将此模块集成到我们的应用程序中?我不清楚文档。如何配置此模块并进行最小更改以确保整个应用程序免受 CSRF 的影响。

我还遇到了mod_csrf(一个防止 CSRF 的 Apache 模块)。在 apache 配置文件中安装此模块和设置是否足以防止 CSRF?

<VirtualHost>

    CSRF_Enable on
    CSRF_Action deny
    CSRF_EnableReferer off

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

apache perl csrf cgi-application csrf-protection

5
推荐指数
1
解决办法
4167
查看次数

Perl CGI :: Fast在不发送数据的情况下关闭连接

我正在尝试部署一个CGI::Application通过Nginx使用的Perl应用程序,使用FastCGI在它们之间进行通信.

Nginx不断返回"502 Bad Gateway",错误日志填写如下:

2015/02/03 12:40:03 [错误] 11209#0:*2上游过早关闭连接,同时从上游读取响应头,客户端:10.1.1.23,服务器:www.example.com,请求:"GET/test .fcgi HTTP/1.1",上游:" http://127.0.0.1:5001/test.fcgi ",主持人:"www.example.com"

这是Nginx站点配置:

upstream @perl {
#   I had been trying to use a socket, but I switched to TCP to try WireShark.
#   server unix:/var/run/nginx/my-app.sock;
    server 127.0.0.1:5001;
}

server {
    listen       80;
    listen       443 ssl;

    server_name www.example.com;
    root /home/example/sites/www.example.com;

    location ~* \.fcgi(/|$) {

        fastcgi_split_path_info ^(.+?\.cgi)(/.*)$;
        # (I know that the `if` is old-style, and that `try_files` is better, but that shouldn't affect whether it works or not.) …
Run Code Online (Sandbox Code Playgroud)

perl fastcgi nginx cgi-application

4
推荐指数
1
解决办法
368
查看次数

如何使用CGI :: Application获取上传文件的内容类型?

我正在尝试使用CGI :: Application处理Perl程序中的上传文件.我需要获取上传文件的内容类型.从我的阅读,以下应该工作,但它不适合我:

my $filename = $q->param("file");
my $contenttype = $q->uploadInfo($filename)->{'Content-Type'};
Run Code Online (Sandbox Code Playgroud)

事实证明,$q->uploadInfo($filename)返回undef.那样做$q->uploadInfo("file").

有任何想法吗?

谢谢!

perl cgi-application

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