gpt4 book ai didi

perl - 如何在 CGI.pm 中清除系统调用

转载 作者:行者123 更新时间:2023-12-04 16:27:54 27 4
gpt4 key购买 nike

我有以下 CGI 脚本:

#!/usr/bin/perl -T
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw/:standard/;
my $query = CGI->new();
my $searchterm = param('name');

my $file = "justafile.txt";
# Begin searching terms and ignoring case
my @entries = `grep -i \"$searchterm\" $file`; # Line10
chomp @entries;
# Do something

当我执行命令时,它给了我这个
Insecure dependency in `` while running with -T switch at /foo/cgi-bin/mycode.cgi line 10.

如何修复第 10 行?

最佳答案

污染的全部意义在于确保未经检查的输入不能提供给潜在的不安全功能。

在这种情况下,您的 $searchterm变量可能包含意外输入,可能允许攻击者在您的系统上执行任意程序。

因此,您要么需要:

  • 通过确保变量与预先确定的正则表达式匹配(请参阅@flesk 的答案)来清除变量,此时 Perl 假定您知道自己在做什么,或者
  • 不要使用反引号(根据@eugene y 的回答)。

  • 如果您使用反引号,您还应该指定 grep 的完整路径。命令,以便您不依赖于 $PATH .

    关于perl - 如何在 CGI.pm 中清除系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227778/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com