CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

使用 PHP 进行身份管理

作者: ,  出处:甲骨文OTN, 责任编辑: 叶江, 
2007-05-24 10:50
  了解如何在基于 PHP 的 Web 应用程序中实现身份管理……

  管理对 Web 页面和应用程序的安全访问是一个常见问题。您希望允许那些受信任的用户访问数据,同时防止未经授权的用户获得数据的访问权。大多数情况下,身份管理是此类问题的解决方案。

  身份管理是一个设计、开发和维护能够识别、验证和审核系统用户的系统的过程。身份管理系统包含一个访问控制列表 (ACL),该列表可列出用户凭证并将其匹配到指定的系统权限。凭证通常是一个用户名/口令对。凭证可以将用户链接到系统权限。系统权限允许帐户访问或修改数据,以及执行子系统或子例行程序。帐户可以是用户、组或系统。

  在本文中,您将了解如何在基于 PHP 的 Web 应用程序中实现身份管理。还将了解如何设计和实现 Oracle 身份管理数据库模型,以及在基于浏览器的应用程序中计划和管理用户交互的所有方面。

  体系结构、身份验证和加密

  体系结构。当 Web 应用程序向 Apache HTTP 服务器请求信息时,会将信息从客户端发送到服务器。用户将该过程视为提交 URL 并收到 Web 页回复。URL 只是 URI 的公开部分;URI 包含 HTTP 头、Cookie 和一个 URL。信息作为 URI 中编码的名称/值对进行传送。

  Cookie 是包含明文或密文的小型文本文件。Cookie 包含浏览器和服务器应用程序之间通信的当前事务状态。以前经常将 Cookie 的内容附加到 URI 以帮助维护事务状态。现在,单个会话 Cookie 将发送一个数值引用,以便将先前的名称/值 Cookie 对安全地存储在服务器上。该数值引用称为 Web 会话 ID。

  使用 Web 应用程序会话时,会话 ID 和有关会话的过期信息作为特殊的会话 Cookie 发送。如果客户端浏览器禁止使用 Cookie,Web 应用程序可能会默认执行 URL 重写,从而将不公开的 URI 的会话 Cookie 重新定向到公开的 URL。通过将数据保留在服务器上并使用唯一会话 ID 进行存储,您可以获得两个好处 — 最小化 URL 的大小,以及确保用户交互的内部细节的安全。

  尽管将会话信息保留在服务器上更加安全,但您必须防止会话劫持。恶意用户可以通过以下方法劫持会话:(a) 窃取会话 Cookie,(b) 复制包括会话 ID 的 URL,或者 (c) 通过中间人攻击攫取会话。现代浏览器使得这些手段更加难以实现,并且 PHP 不会将物理会话 Cookie 写入文件系统。

  Cookie 和会话体系结构的好处在于,如果您将数据存储在规范化数据模型中,则可以挖掘历史会话数据。通过这些数据,您可以了解客户如何使用您的 Web 应用程序,还可以了解客户的浏览模式和购买趋势。此类信息可让企业将营销目标对准个人而非群体。

  身份验证。您将使用两种身份验证模型之一在 Web 应用程序中验证用户身份。您可以在基本 HTTP/HTTPS 身份验证以及 Cookie 和会话身份验证模型之间进行选择。第三种身份验证模型(摘要 HTTP 身份验证)正在开发中,但可能几年内都无法提供完整的解决方案。

  前两种身份验证模型可让您从 Web 页获得凭证,并根据 ACL 对其进行验证。无论浏览器是否接受 Cookie,它们都可让您正常工作。基本 HTTP/HTTPS 和摘要 HTTP 方法都针对领域进行验证(而不使用 Cookie),而会话管理至少需要写入一个会话 ID Cookie。

  当您将会话 ID 作为 URL 的一部分发送时,URL 重写会带来一些安全风险,因为某些用户即时消息会将 URL 发送给其他人。这样,其他人就可以劫持授权,以访问或泄漏机密数据。URL 重写的替代方法是,将会话 ID 置于呈现的 Web 页面中作为隐藏域。尽管这会带来某些漏洞,但比将会话附加到 URL 的风险小。

  PHP 验证脚本接收用户名和口令的名称/值对。然后,脚本将该名称/值对与 ACL 中存储的数据进行比较。在我们讨论的这两种身份验证模型中,这个过程都是相同的。尽管我们习惯以加密形式存储服务器端口令,但您应该知道,明文用户和口令值的任何泄漏都会危及系统的安全。

  因此,您不应强迫用户创建复杂的口令,因为复杂的口令不容易被记住。用户会在记事本或黄色贴纸上记下这些难以记住的口令。书面记录的口令是 Web 应用程序的安全隐患,因为黑客可能会找到并滥用它们。

  加密。加密始终是 Web 应用程序开发、部署和管理的热门话题。

  PHP Web 应用程序有两种加密方法。第一种涉及到加密协议。加密的协议(如 HTTPS)可以防止利用网络分析程序(通常称为数据包嗅探)进行的中间人攻击。第二种涉及到加密用户口令,以防止泄漏给服务器上的刺探程序。

  如果加密的口令与源代码分开存储,则口令加密可以最好地保护您的系统免受攻击。如果 ACL 是文件系统上的一个文件,则一次服务器黑客攻击就会泄漏加密方法和加密的值。您可以将 ACL 存储在数据库中以降低加密口令的泄漏风险。

共10页。 1 2 3 4 5 6 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i