教您如何应用PHP开发出安全的应用程序-之四

时间:2010-01-06 10:37:47   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:数来向客户端浏览器发送"Authentication Required"信息,使其弹出一个用户名/密码输入窗口。当用户输入用户名和密码后,包含有 URL 的 PHP 脚本将会再次和预定义变量 PHP_AUTH_USER、PHP_AUTH_PW 和 AUTH_TYPE 一起被调用,这三个变量分别被设定为用户名,密码和认证类型。预定义变量保存在 $_SERVER 或者 $HTTP_SERVER_VARS 数组中。系统仅支持"基础的"认证。以下是在页面上强迫...
  正文:

例子:用 PHP 进行 HTTP 认证

PHP 的 HTTP 认证机制仅在 PHP 以 apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本。在 Apache 模块的 PHP 脚本中,可以用 header() 函数来向客户端浏览器发送"Authentication Required"信息,使其弹出一个用户名/密码输入窗口。

当用户输入用户名和密码后,包含有 URL 的 PHP 脚本将会再次和预定义变量 PHP_AUTH_USER、PHP_AUTH_PW 和 AUTH_TYPE 一起被调用,这三个变量分别被设定为用户名,密码和认证类型。预定义变量保存在 $_SERVER 或者 $HTTP_SERVER_VARS 数组中。系统仅支持"基础的"认证。以下是在页面上强迫客户端认证的脚本范例:



<?phpif (!isset($_SERVER['PHP_AUTH_USER'])){ header('WWW-Authenticate: Basic realm="My Realm"');header('HTTP/1.0 401 Unauthorized');echo 'Text to send if user hits Cancel button';exit;}else{ echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";}?>


(3) 检测IP地址

一般人们普遍认为一个IP地址唯一地确定一个访问者。但实际上并不是这样的。代理服务器可用相同的IP地址发送不同用户的请求。另外IP地址的盗用也普遍存在。检测 IP地址有它们的用处,但相当有限。例如你是一个论坛版主,你发现某个用户粘贴一些不健康的、违法的内容。你可以找到他的IP地址,把从这个IP连进来的用户逐出论坛。使用下面一行命令将会得到某个特定请求的源IP地址:

# ip = $REMOTE_ADDR


4、使用PHP加密技术

在PHP中,加密技术主要用来加密信息、产生校验和和摘要。使用加密技术可大大地增强安全性能。 这里只讲述使用加密技术的一些概念。如果你想进一步了解,应参考一些好的加密技术资料。加密技术的标准是Bmce Schneier的应用加密技术,非常值得一读。他的网站(www.counterpane.com/labs.html )是在互联网上查找加密技术资料的好起点。数据加密是一个非常复杂的话题,这里只简单介绍一下。

现在关于加密php程序的,除了zend公司的产品产品,其他的都不尽人意。这里我给大家介绍一个开源的产品,一个很多好的php加密软件--php_screw. 他的好处是用了php的zend引擎,而且是对代码加密,和系统平台没有任何关系,解决了产品放在其他地方的保密问题。

(1)安装php_screw

#wget http://belnet.dl.sourceforge.net/sourceforge/php-screw/php_screw-1.3.tgz#tar zxvfphp_screw.1.3.tar.gz # cd php_screw.1.3# /opt/php/bin/phpize # ./configure --with-php-config=/opt/php/bin/php-config # vi my_screw.h#这个是密码文件,用户可以自己设置加密的密码 # make# cp ./modules/php_screw.so/usr/local/php/lib/php #cd tools # make #make生成screw 这个可执行文件,它用来加密php文件,生成加密后的.php文件。


(2)加密文件:

加密文件,就是用上一步的make命令生成的screw文件来生成新的加密文件。

举例:加密/opt/php/htdocs/index.htm文件

# ./screw /opt/php/htdocs/index.htm


加密程序会生成加密后的文件叫index.php,而原来加密前的文件自动备份成index.php.screw。 加密产品所要加密的文件后,可以删除备份文件。备份php_screw.so和screw文件,以后还可以继续使用他们来加密和解释。最后删除php_screw的目录。
来源:http://www.002pc.com/master/College/Programming/PHP/11548.html

收藏到:

关于《教您如何应用PHP开发出安全的应用程序-之四》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td