精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>PHP教程>正文

如何利用内置PHP灵活性执行外部程序


来源: 时间:07-02-23 点击: 点击这里收藏本文

列表F
total 90
-rw-r--r--   1 user  cust         611 Jul 17  2004 CHANGE
drwxr-xr-x   2 user  cust         512 Jul 27  2004 cgi
drwxr-xr-x   5 user  cust         512 Jan 27  2005 vhost

函数passthru()exec()类似,除了一点,就是它在被调用时直接将原始的输出返回到浏览器。通常,这只有在你的外部命令的输出是原始二元数据,需要直接输入到解码器中的时候才有用——例如,一个音频流或图象。列表G举例说明了passthru()是如何起作用的。.

列表G
<?php
header("Content-Type: audio/wav");    // send MIME headers
passthru("cat hello.wav");            // send binary data
?>

潜在的弱点

通过PHP脚本执行外部命令始终是一个冒险的建议。如果你的应该程序允许用户输入,那么就会始终存在用户捉弄系统,执行有害命令的危险。为了避免这一点,可以有两种选择:

1.避开命令字符串

PHP提供了escapeshellcmd()escapeshellarg()函数,这两个函数会利用引号和反斜线“清除”命令字符串和变量。在将任意的用户输入exec()passthru()或反引号运算符之前,对它们运行这些命令是一个好办法。(列表H)

列表H


<?php
$cmd = "ls / -als & rm -rf /";
exec(escapeshellcmd($cmd));
?>

2.利用安全模式

另一个选择就是激活PHP的“安全模式”,来限制什么样的用户可以利用exec()passthru()。反引号运算符在安全模式下是不可用的,而exec()passthru()只能用来执行位于前面所定义的“安全”目录中的命令。这样就对这些命令提供了清晰的界限,并减少了与在脚本中使用它们相关的总风险。

但愿你现在应该对怎样从PHP内部启动外部程序有了一个清晰的看法,也对怎么样在使用这些性能时,保护你的应用程序免受黑客攻击有所了解。继续自己尝试它们吧……编程快乐!

9 7 3 1 2 4 8 :

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.