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

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

  第二电脑网导读:web服务器和浏览器之间的信息流。SSL不仅用于加密在互联网上传递的数据流,而且还提供双方身份验证。这样,你就可以安全地在线购物而不必担心别人矢随你的信用卡的信息。这种特性使得SSL适用于那些交换重要信息的地方,像电子商务和基于Web的邮件。SSL使用公共密钥加密技术,服务器在连接结束时给客户端发送公用密钥用来加密信息,而加密的信息只...
  正文:

5、使用具有SSL技术

SSL是英文Server Side Includes的缩写。使用具有SSL(安全套接字协议层)功能的web服务器,可以不用改变一行代码而提高网站的安全性能。SSL使用加密方法来保护web服务器和浏览器之间的信息流。SSL不仅用于加密在互联网上传递的数据流,而且还提供双方身份验证。

这样,你就可以安全地在线购物而不必担心别人矢随你的信用卡的信息。这种特性使得SSL适用于那些交换重要信息的地方,像电子商务和基于Web的邮件。

SSL使用公共密钥加密技术,服务器在连接结束时给客户端发送公用密钥用来加密信息,而加密的信息只有服务器用它自己持有的专用密钥才能解开。客户端用公用密钥加密数据,并且发送给服务端自己的密钥,以唯一确定自己,防止在系统两端之间有人冒充服务端或客户端进行欺骗。

加密的HTTP连接用443端口号代替80端口号,以区别于普通的不加密的HTTP。客户端使用加密HTTP连接时会自动使用443端口而不是80端口。这使得服务端更容易作出相应的响应。

apache服务器下,可以通过直接编辑服务器配置文件或者在需要使用SSI的目录中创建.htaccess文件来启动SSL。登录到服务器,找到配置文件的存放目录,使用文字编辑器打开文件srm.conf,找到以下几行:

# If you want to use server side includes, or CGI outside#ScriptAliased directories,uncomment the following lines.#AddType text/x-server-parsed-html .shtml#AddType application/x-httpd-CGI.CGI


将以AddType开头的两行并且去掉每一行最前面的"#"符号即可。保存所做的修改,然后再打开文件access.conf。

<Directory /usr/local/etc/httpd/htdocs> # This may also be "None", "All", or any combination of "Indexes",# "Includes", or "FollowSymLinks"Options Indexes FollowSymLinks</Directory>


将其中的Options Indexes FollowSymLinks改为:Options Indexes FollowSymLinks Includes 即可。

例子:如何建立一个仅接受强加密请求的SSL服务器,而又允许对外浏览器使用更强的加密?

这个功能被称为以服务器为网关的加密(Server Gated Cryptography [SGC]), 在README.GlobalID文档中有详细说明。简单地说就是:服务器拥有一个由来自Verisign的一个特殊的CA证书签发的服务器身份证, 从而在对外浏览器上实现强加密。

其过程如下:

浏览器使用对外密码进行连接,服务器返回其全局ID身份证,浏览器校验后在后继HTTP通讯产生之前提升其密码组。

现在的问题是:如何允许这样的提升,而又强制性地使用强加密。换句话说就是:浏览器必须在开始连接时就使用强加密,或者提升倒强加密,但是维持对外密码是不允许的。以下巧妙地解决了这个问题:

httpd.conf:# 允许在初始握手阶段使用所有的密码,# 以允许对外服务器通过SGC功能提升密码组SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL<Directory /usr/local/apache2/htdocs>#但是最终会拒绝所有没有提升密码组的浏览器SSLRequire %{SSL_CIPHER_USEKEYSIZE}>= 128</Directory>


来源:http://www.002pc.com/master/College/Programming/PHP/11547.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