保护ARP3-针对SQL注入攻击的AutoResponse Plus安装

保护ARP3-针对SQL注入攻击的AutoResponse Plus安装,sql,code-injection,Sql,Code Injection,我正在使用自动回复电子邮件软件(AutoResponse Plus-ARP3)。这是一个安装在cgi-bin目录中的perl脚本。上周有人入侵了这个软件,并从我的服务器上用这个软件发送了大量垃圾邮件。很少有研究表明,该软件没有防止SQL注入的机制 如果您在同一条船上,请联系供应商进行修复。似乎没有一个简单的解决方案可以百分之百地修复它,因为这个软件的源代码被缩小和模糊化了。您似乎很困惑。注入错误是编码错误,而不是验证问题。这是因为在生成代码时未能将文本转换为适当的文本 比如说, my $stmt

我正在使用自动回复电子邮件软件(AutoResponse Plus-ARP3)。这是一个安装在cgi-bin目录中的perl脚本。上周有人入侵了这个软件,并从我的服务器上用这个软件发送了大量垃圾邮件。很少有研究表明,该软件没有防止SQL注入的机制


如果您在同一条船上,请联系供应商进行修复。似乎没有一个简单的解决方案可以百分之百地修复它,因为这个软件的源代码被缩小和模糊化了。

您似乎很困惑。注入错误是编码错误,而不是验证问题。这是因为在生成代码时未能将文本转换为适当的文本

比如说,

my $stmt = "
   SELECT *
     FROM Table
    WHERE $field='$value'
";
应该是

my $stmt = "
   SELECT *
     FROM Table
    WHERE ".$dbh->quote_identifier($field)."=".$dbh->quote($value)."
";


您所展示的程序示例是故意缩小和模糊的。在着手研究它之前,我们必须将其分解并解开。没有什么灵丹妙药可以阻止SQL注入,除了:永远不要将变量插入SQL查询。相反,可以使用占位符。如果代码使用DBI接口,那么更改代码以便使用占位符可能非常容易。但这不能用顶部的几行简单的额外代码来完成。运行
perl-p的/\“(\\x\w\w)+\“/$&/gee”这个\u脚本
,它的不可读性就会大大降低。如果您熟悉php,为什么不创建一个包装器php CGI脚本来读取POST变量,然后创建一个合适的CGI环境呢(也就是说,设置一些环境变量,请求\u METHOD=“GET”,QUERY\u STRING=“…”)以获得模糊的perl脚本?我在shell中运行了这个命令“perl-p的s/\”(\\x\w\w)+\“/$”和/gee'arp3-new.pl&出现错误无法打开perl脚本“s/\”(\\x\w\w)+\“/$&/gee”:没有此类文件或directory@Vijmob忘记了一个标志,它应该是
perl-pe
,而不是
perl-p
。当脚本被混淆时,我如何使用这个建议?封闭源代码软件的一个问题是你自己无法修复它。你必须和你从谁那里获得脚本许可的人谈谈。
my $stmt = "
   SELECT *
     FROM Table
    WHERE ".$dbh->quote_identifier($field)."=?
";
# Followed by ->execute($value) instead of ->execute()