Perl | CGI 安全
CGI 代表 公共网关接口 ,这是一个定义好的在网络上编写动态代码的协议。它也用于在线执行脚本。 Perl 被接受为网络上 HTML 页面的可执行语言。Perl 类似于任何其他 CGI 语言,在这种语言中,当一个代码被执行时,它创建了一个与基本操作系统的接口,这可能会给外部力量入侵我们的系统提供一个途径。 Perl 本身并不是不安全的,但是,程序员试图每隔一段时间下载一次 CGI 脚本来创建上述路径。所有的 CGI 脚本可能都没有我们希望的那么安全。程序员在网上下载任何 CGI 脚本时都应该持怀疑态度。此操作附带了几个安全规范。从外部来源下载的任何 CGI 脚本都可能在代码中包含几个错误,或者脚本中可能包含入侵者故意造成的错误。 CGI 脚本一上线,就面向全世界开放。 网上有两种人可能会通过 CGI 入侵我们的系统,造成严重的问题。一个是“黑客”就是那种以创造性操纵系统工作的知名人士。其他的是“黑客”意思是那些破坏网页或进入系统进行一些在线恶作剧的人。
什么是不安全的 CGI? 众所周知,许多 CGI 脚本的代码中存在安全漏洞。他们中的许多人已经被发现并修复,以消除任何安全漏洞参数,但有些仍然可以在线获得。很多时候,运行旧版本的脚本会导致重大问题。人们应该找到它们,并在为时已晚之前完全摆脱它们。 不安全的 CGI 脚本有很多例子,有些如下: 1)Hotmail: 1998 年 12 月,人们发现非常流行的在线邮件系统 Hotmail 在其运行相同的 CGI 脚本中有一个缺陷。该脚本允许入侵者进入邮件账户,并允许他们浏览账户持有人的邮件。这是一个明显的安全漏洞,授权未经授权的用户处理 Hotmail 用户的邮件。 2) php.cgi 这个文件不应该在 cgi-bin 目录下下载。虽然这个文件提供了许多好的特性,比如数据库访问,但是据说它是一种不安全的 CGI 形式。它允许在线平台上的任何人侵入你的个人电脑并浏览那里的文件。他们可能会遇到一份会带来大麻烦的私人文件。
执行外部 CGI 程序 在你的机器中执行外部 CGI 文件或脚本的主要要求是: 1)你的 web 服务器应该支持 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 '<html>';
print '<head>';
print '<title>Hello Everyone - The first ever CGI program.</title>';
print '</head>';
print '<body>';
print '<h2>Hello everyone, CGI stands for Common Gateway Interface.</h2>';
print '</body>';
print '</html>';
输出:
网络服务器意识到编写的代码不应该被打印,而应该被执行。当执行 CGI 程序时,服务器自动为用户提供 STDIN、STDOUT 和 STDERR 文件处理程序。
读写外部程序 Perl 充当某个程序的调用者。 调用和执行这些文件的方式有很多: 1) exec()方法:当 Perl 遇到这个函数时,它会查看参数并执行相应的命令。通过这个命令,Perl 不会将控制权转移给原始进程或父进程。 2) 系统()方法:参数被视为子进程的命令。遇到此语句时,子进程将与父进程分离。父进程一直等到子进程完成任务并返回。系统语句的语法是:
system ("test", "/usr/stats/$username");
该代码要求用户在访问名为“测试的页面时输入用户名。验证用户名后,程序会在用户名栏下显示一些文件。 使用 exec() 方法的不安全 CGI 脚本和安全 CGI 脚本之间的区别示例如下: 1)exec“echo $ arg”;这是一个不安全的 CGI 代码。 2)exec“echo”,$ arg这是一个安全的 CGI 代码,因为它不包含外壳。
不安全 CGI 的后果 CGI 充当网页代码和最终用户之间的网关。毫无疑问,这通过主机的系统,人们可以很容易地进入这个网关,并引起麻烦。 未经授权的用户可以通过各种方式侵入您的系统并滥用您的重要信息。这些可以通过特别注意下载 CGI 脚本的安全规范来避免。以下讨论了这些非法和未受保护的方法可能会损害我们的接口: 1)不安全的 CGI 系统可能会泄露有关主机计算机环境的重要和机密信息。这可以通过在线平台实现系统的完全透明。 2)CGI 代码的远程开发人员可以在用户需要输入一些东西来执行几个程序或方法时,煽动用户执行一些命令。 如前所述,程序员应该很清楚自己在使用什么,并确保自己的安全。他们应该始终对通过在线平台整合的每个 CGI 脚本持怀疑态度。