-
PHP的跨平台性和执行效率一直受到广大网络程序员的亲睐,它可以和各种Web服务器和数据库服务器整合,运行在各种平台上,提供强大的Web服务功能,且效率较高。唯一的缺点就是在和其他的Web Server整合时,需要做一些配置,这些配置对于不熟悉网络程序设计的人来说,是有些困难,不过也有人提供过整合后的安装包,就像安装Windows程序一样,不需要做任何的配置,比如PhpHome整合了Apache+Php+Mysql,只要安装完,就可以直接使用了(当然这只是在Windows平台上)。这样的整合也有一些缺陷,就是在一台计算机上同时运行了两个Web服务器。
我这里要说的是将Php整合到IIS中,再加上Mysql,让IIS除了提供ASP、ASP.net的解析外,还可以同时解析Php。虽然在Php的安装包中提供了完整的安装说明(英文),但是在安装的过程中还是有一些问题,以下是我今天的IIS+Php+Mysql安装手记。
在安装之前,请从下面几个网站下载最新的安装包:
Php:http://www.php.net/ 我用的是php-5.0.4-Win32
Mysql: http://www.mysql.com/ 我用的是mysql-4.1.11-win32
IIS: Windows安装盘内 我用的是Windows XP安装Php
第一步:php-5.0.4下载后是一个压缩包,解压到C:\Php,当然也可以到其他目录,有你自己来决定,我这里选择C:\Php,后面的设置里也是用这个路径。
第二步:然后设置系统环境变量Path=;C:\Php(环境变量的设置首先在“我的电脑”上点击右件,查看“属性”,选择“高级”标签,点击”环境变量”,在”系统变量”里修改Path的值,注意在原来的Path值之后加上;C:\Php),这一步的设置和php4不一样,对于php4的设置,这里就不多讲了,有关信息可以查看Php4安装包中的安装说明。
第三步:修改Php.ini。在php-5.0.4的根目录下有这样的两个文件 php.ini-recommended和php.ini-dist,两个都是Php的配置文件,php.ini-recommended是官方经过优化的,推荐使用,php.ini-dist是原始的。我们这里使用的是php.ini-recommended。
用记事本或EditPlus打开这个文件,修改如下几项:
修改doc_root = 的值,使它指向你的IIS的主目录,例如doc_root =”C:\Inetpub\wwwroot”
修改extension_dir = 的值,使它指向Php提供的拓展文件,Php-5.0.4的拓展文件存放于ext目录下,这与Php4的目录不一样,我们这里修改成extension_dir = “C:\PHP\ext”
找到;extension=php_mysql.dll,去掉前面的;,这样我们才能使用MySql
除此之外,其他的就不需要设置了,保存该文件,并把文件名改为php.ini,再将这个文件拷贝到C:\Windows目录下。
Php5.0.4安装完成。配置IIS
Php-5.0.4只是一个脚本程序的解析器,还需要一个Web Server来提供Web服务,我这里选择了IIS,对IIS只需要做如下设置就可以了:
打开IIS(你可以从”控制面板”的”管理工具”中打开”internet信息服务”(IIS))
在“默认站点”上点击右键查看”属性”,选择”主目录”标签,进入”配置”对话框
在”应用程序配置”中点击”添加”,”可执行文件”处点击浏览,选择C:\php\php5isapi.dll,”扩展名”处添加.php确定,IIS配置完成,为了让配置生效,需要重新启动IIS,你可以在IIS中来重起,也可在命令窗口下使用一面的命令:
停止服务:net stop iisadmin
启动服务:net start w3svc
OK,IIS和Php安装完成!如果你不需要安装MySql数据库,这个时候你已经可以测试Php程序了。Php测试
打开记事本或EditPlus,输入如下代码:
< ?php
phpinfo();
?>
将它保存为一个Php文件,如Phptest.php,保存到IIS的主目录下。
然后就可以在浏览器中输入http://localhost/Phptest.php ,这是你就可以看到你机器上的Php配置信息。安装MySql
MySql的安装简单的多,不需要做任何的配置,只需要根据安装向导,很快就可以完成了。
mysql-4.1.11安装完后会有一个Mysql的配置向导,根据这个向导来设置访问数据库的端口,用户名和密码,对于端口和用户名,建议是用默认的3306和root,密码自己设一个,也可以为空,完成后Mysql就启动了。
为了能够很容易的操作MySql数据库,可使用phpMyAdmin,这是一个用Php编写的对MySql数据库操作的程序,可以让我们很容的操作MySql数据库。OK,到此,IIS+Php+Mysql安装完成,你就可以在这一台机器上同时解析ASP、ASP.net和Php了。
-
网络程序设计的安全性问题考虑 - [开发手记]
在写网络程序时,很多时候都没有考虑到程序设计的安全性,自己的网站也几次被人黑过,还好没有造成较大的损失,近日来想了一下这个问题,也看了几篇文章,在这里简单谈一下。
我这里谈的安全性是指在程序设计中考虑的安全性,更程序运行的环境无关,也就是跟服务器系统的安全性无关。
一、用户认证安全问题
在很多网络程序中,用户登录的认证都必不可少,对于采取的认证方式和用户密码的保密都回带来安全漏洞。
首先来说说密码问题,密码的保护是重要安全问题,很多的密码仍然是以明文的的方式存放在数据库中的,这样的密码存放方式很显然是不安全的,现在常用的方式将密码用MD5加密,然后将密码的密文存放在数据库中,在认证时取得用户提交的密码,通过MD5加密后的密文与存放的密码密文比较,以此来验证用户,可以保护密码,即使让人知道密文,因为MD5加密是单向的,也不会得到密码。
虽然保存的密码是密文,但是对于用户提交的密码在从浏览器传输到服务器的这一过程中,用户密码是明文的,如果这段信息被人窃取,密码也就被人知道了,所以一种解决方法就是在浏览器上用户提交密码后通过 JavaScript的MD5加密程序将用户密码加密程密文后传输,这样就可以保证密码在传输过程中的安全性。但是在一些浏览器上这样的 JavaScript脚本可能会被禁止或是不能正常地运行,因此我们也可以采用另外的方法,在提交的用户密码中加入一些干扰码,让用户密码和干扰码一体提交到服务器上,然后在服务器上在除掉干扰码(或者存放在数据中的密文也是有用户密码和干扰码通过MD5加密后的密文),这样在传输过程中的用户密码就不再明文的了。通过这些方法,能够进一步的保证用户认证的安全性。上述的方法只是解决了密码的保护问题,密码的破解也可以通过试探来完成,也就是使用程序不断的组成密码来登录,如果时间够长,密码是可以被试出来的,为了防止这种情况,出现了验证码,也就是在用户登录时除了用户名和密码外,还需要输入验证码,验证码是随机生成的,不会重复,而且验证码不能用文本的方式显示,因为文本很容易会被程序识别,而且最好是不规则的图形,在背景上再加上一些杂色或杂点干扰,这样就不会被程序很容易识别。这些图片都是程序运行时才生成的。
另外,在验证用户密码时还应考虑到用户密码中的特殊字符,比如用户名和密码中如果有单引号,也会有安全问题。
比如,在验证用户时采用的SQL语句是:
Select * From UserInfo Where UserName=’”&Request.Form(”UserName”)&”‘ and PassWord=’”&Request.Form(”PassWord”)&”‘
如果我在用户名和密码中输入的是:tttt’ or ‘1=1,那么,我最终在执行的SQL语句就变成了:
程序代码: [ 复制代码到剪贴板 ]
Select * From UserInfo Where UserName=’tttt’ or ‘1=1′ and PassWord=’tttt’ or ‘1=1′
这样的SQL语句就会取得用户表中的第一个用户作为登录用户,如果第一个用户是超级用户,那么……
解决的方法可以将上面的SQL语句改成:
Select * From UserInfo Where UserName=’”&Request.Form(”UserName”)&”‘
再查询出有这个用户名后,在来认证密码是否一致,可以避免这一情况。初次之外,就是在接受到用户名和密码后,判断是否有单引号,如果有,则提示。二、Access数据库的安全问题
因为Access数据库是文件方式的,所以我们只要知道这个数据的名称和存放的路径,我们就可以得到这个数据库,比如数据库名称为 myData.mdb,存放在网站的MyData目录下,那么通过htto://www.yourhost.com/MyData/myDat.mdb就可以得到这个数据库,数据的安全得不到保证。
解决的方法很简单,更改Access数据库的扩展名,比如改称MyData.asp或MyData.asa,这样即使知道文件名和存放路径,也没办法得到这个数据库。以上是暂时想到的一些安全问题,只是个人意见。