📜  珀尔 | CGI 安全

📅  最后修改于: 2022-05-13 01:55:34.371000             🧑  作者: Mango

珀尔 | CGI 安全

CGI代表通用网关接口,它是用于在 Web 上编写动态代码的定义协议。它还用于在线执行脚本。
Perl被接受为 Web 上 HTML 页面的可执行语言。 Perl 类似于任何其他 CGI 语言,在其中执行代码时,它会创建与基本操作系统的接口,这可能会为外部力量侵入我们的系统提供途径。
Perl 本身并不是不安全的,但是,程序员会尝试下载所有其他 CGI 脚本来创建上述路径。所有的 CGI 脚本可能并不像我们希望的那样安全。在线下载任何 CGI 脚本时,程序员应该持怀疑态度。此操作附带了几个安全规范。从外部来源下载的任何 CGI 脚本都可能在代码中包含多个错误,或者错误可能被入侵者故意包含在脚本中。
一旦 CGI 脚本上线,它就可供全世界使用。网上有两种类型的人可能通过 CGI 侵入我们的系统并导致严重问题。一个是“黑客” ,他们是创造性地操纵系统工作的知名人士。其他的是“Crackers” ,意思是那些破坏网页或进入系统进行一些在线恶作剧的人。什么是不安全的 CGI?
众所周知,许多 CGI 脚本在其代码中存在安全漏洞。其中很多已经被发现并修复以删除任何安全漏洞参数,但有些仍然可以在线获得。很多时候,运行旧版本的脚本会导致重大问题。人们应该在为时已晚之前找到它们并完全摆脱它们。
有很多不安全的 CGI 脚本的例子,一些如下:
1) 热邮件:
1998 年 12 月,人们发现非常流行的在线邮件系统 Hotmail 在其运行相同的 CGI 脚本中存在缺陷。该脚本允许入侵者进入邮件帐户,并允许他们通过帐户持有人的邮件。这是一个明显的安全漏洞,使未经授权的用户有权处理 Hotmail 用户的邮件。
2) PHP.cgi
此文件不应下载到cgi-bin目录中。尽管此文件提供了许多良好的功能,例如数据库访问,但据说它是一种不安全的 CGI 形式。它允许在线平台上的任何人侵入您的个人计算机并浏览那里的文件。他们可能会遇到可能造成重大麻烦的个人文件。外部 CGI 程序的执行
在您的机器中执行外部 CGI 文件或脚本的主要要求是:
1) 你的网络服务器应该支持 CGI 接口和
2) 应包含处理 CGI 程序的配置。
CGI 文件存储在预配置的 CGI 目录(/cgi-bin) 中,它们的执行由 HTML 浏览器完成。按照惯例,所有 Perl CGI 文件都有一个扩展名“.cgi”

Perl
#!/usr/local/bin/perl
  
# CGI script begins
# This would always be the first line
# of the CGI Script.
print "Content-type:text/html\n\n";
print '';
print '';
print 'Hello Everyone - The first ever CGI program.';
print '';
print '';
print '

Hello everyone, CGI stands for Common Gateway Interface.

'; print ''; print '';


输出:

Web 服务器知道编写的代码不应该被打印,而应该被执行。当执行 CGI 程序时,服务器自动为用户提供STDIN、STDOUT 和 STDERR 文件处理程序读写外部程序
Perl 充当某个程序的调用者。
可以通过多种方式调用和执行这些文件:
1) exec() 方法:当 Perl 遇到这个函数时,它会查看参数并执行相应的命令。通过这个命令,Perl 不会将控制权转移给原始进程或父进程。
2) system() 方法:参数被视为子进程的命令。遇到此语句时,子进程与父进程分离。父进程等待子进程完成其任务并返回。系统语句的语法是:

system ("test", "/usr/stats/$username");

当用户访问名为“ test ”的页面时,此代码会要求用户输入用户名。验证用户名后,程序会显示该用户名栏下包含的一些文件。
使用exec()方法的不安全和安全 CGI 脚本之间的区别示例如下:
1)执行“回声$ arg”;这是一个不安全的 CGI 代码。
2)执行“回声”,$arg;这是一个安全的 CGI 代码,因为它不包含外壳。不安全 CGI 的后果
CGI 充当网页代码和最终用户之间的网关。毫无疑问,这是通过主机的系统,很容易访问该网关并造成麻烦。
未经授权的用户可以通过多种方式侵入您的系统并滥用您的重要信息。这些可以通过特别注意下载 CGI 脚本的安全规范来避免。这些非法和不受保护的可能会损害我们的接口的几种方法讨论如下:
1) 不安全的 CGI 系统可能会泄露有关主机计算机环境的重要和机密信息。这可以通过在线平台实现系统的完全透明。
2) CGI代码的远程开发者可以在用户需要输入一些东西来执行几个程序或方法时,促使用户执行一些命令。
如前所述,程序员应该清楚知道自己在使用什么并确保自己的安全。他们应该始终对通过在线平台合并的每个 CGI 脚本持怀疑态度。