很多Web应用程序向用户提供了十分便捷的系统功能。这些系统功能本来只能在操作系统的命令行工具中实现,例如Ping某个IP地址,查看ARP缓存,添加系统用户,查看、执行或者删除文件等。PHP作为一门脚本语言,本身也提供了一些可以调用外部应用程序的函数。当用户需要执行系统功能时,可以将命令提交给Web应用程序;Web应用程序再将其传递给操作系统的命令行工具并执行。
但是,由于用户的输入是不确定的,Web应用程序必须保证能够过滤那些非法请求,否则这种便利的功能可能被别有用心者利用,成为攻击Web应用程序的途径。
1、PHP语言执行操作系统命令
我们首先了解一下使用PHP语言编写的Web应用程序是如何执行操作系统命令的。PHP语言并不十分复杂,它和C语言有很多相似之处,即使你此前完全没有接触过PHP,也可以很容易地阅读一些简单的代码。
PHP脚本以<?php开始,以?>结束,下面给出了一段最简单的PHP代码。
<?php
echo "Hello World!";
?>
这段代码可以在页面上输出“Hello World!”。
当一个页面中需要提交参数时,在PHP代码中可以使用$_REQUEST、$_GET、$_POST来获取提交的数据。
具体介绍如下:
- $_REQUEST,可以获取以post方法和get方法提交的数据,但是速度比较缓慢。
- $_GET,用来获取由浏览器通过get方法提交的数据。
- $_POST,用来获取由浏览器通过post方法提交的数据。
下面代码的功能是从页面中名为cmd的文本框中接收并输出数据,注意这里的数据是以get方法提交的。