将Oracle内置的安全特性用于php

作者:凯旋网络来源:凯旋网络

站.长.站


  为了简化新用户创建初期的工作,Oracle 自带了三个预定义的角色:

中国.站长站


  CONNECT 角色 — 该角色使用户可以连接数据库以及执行基本的操作,如创建自己的表。默认情况下,该角色不能访问其他用户的表。 Chinaz^com


  RESOURCE 角色 — RESOURCE 角色与 CONNECT 角色相似,但它允许用户拥有较多的系统权限,如创建触发器或存储过程。 Chinaz.com


  DBA 角色 — 允许用户拥有所有系统权限。

Chinaz


  使用中的授权和权限

Www_Chinaz_com


  在本部分中,我们将讨论如何使用 Oracle 的授权和权限来提高本文开头部分讨论的那个简单 CMS 示例的安全性。假定,提供给应用程序用户的内容存储在 WEB_CONTENT 表中。 站长.站


  首先,创建该表。启动 Oracle 数据库特别版,以系统管理员身份登录。如果还没有释放示例 HR 用户,请将其释放。按照特别版安装附带的入门指南中的指示操作。请注意,默认情况下,HR 用户被赋予 RESOURCE 角色。在这里,赋予该用户 DBA 角色,这样就可以使用该帐户管理 CMS 应用程序的数据库方面了。当然,不会使用 HR 用户帐户进行在线访问,只用它管理数据库。 中国站长_站,为中文网站提供动力


  现在,可以使用对象浏览器或通过执行 SQL Commands 窗口创建新表。下面是创建该表的代码:

Chinaz_com


  CREATE TABLE WEB_CONTENT ( 中国.站长站

  page_id NUMBER PRIMARY KEY, 中国站长_站,为中文网站提供动力

  page_content VARCHAR2(255)

Www.Chinaz.com

  );

站长.站


  由于该表是使用 HR 用户帐户创建的,因此该表归 HR 帐户所有并位于 HR 模式中,并且在明确授予其他用户访问该表的权限前,其他用户无法访问该表。如果不信,可以创建一个新用户,用该用户访问 WEB_CONTENT 表试试。 Www.Chinaz.com


  现在,创建两个新用户,CMS_USER 和 CMS_EDITOR。最终,将授予 CMS_USER 对 WEB_CONTENT 表的只读权限,并将该用户用作为匿名 Web 用户提供内容的数据库帐户。CMS_EDITOR 帐户将在该表上拥有更多权限,将被用作 CMS 编辑的帐户(该帐户需要更改和维护该表中的数据)。

中.国.站.长.站


  可以使用 XE 的图形界面或通过执行以下命令创建新用户:

Www~Chinaz~com


  CREATE USER cms_user IDENTIFIED BY cms_user;

Chinaz_com

  CREATE USER cms_editor IDENTIFIED BY cms_editor; Chinaz

  (出于简化的目的,此处的口令与用户名对应。)

中.国站长站


  为了让这两个帐户都登录数据库,我们需要赋予它们 CONNECT 角色。为此,在 XE 图形界面的 Administration/Database Users 部分选中用户信息下的 CONNECT 复选框,或执行以下命令: [中国站长站]


  GRANT CONNECT to cms_user; 中国站.长站

  GRANT CONNECT to cms_editor; Www~Chinaz~com


  现在,如果尝试以 CMS_USER 或 CMS_EDITOR 用户登录并试图从 WEB_CONTENT 表读取数据 (select * from hr.web_content;),将遇到以下错误: 中.国站长站


  ORA-00942:table or view does not exist

中.国.站.长.站

  为了访问数据或仅是看到表,需要授予 CMS_USER 和 CMS_EDITOR 帐户对 WEB_CONTENT 表的只读权限:

中国站长.站

  GRANT SELECT on hr.web_content to cms_user; 站.长.站

  GRANT SELECT on hr.web_content to cms_editor; Chinaz@com


  以上代码使这两个帐户可以对 WEB_CONTENT 表执行 SELECT 语句。如果尝试执行其他语句,则会遇到错误。例如,插入一行:

Www.Chinaz.com


  INSERT INTO hr.web_content (page_id,page_content) VALUES (1,''hello world''); 中国.站.长站

  将产生错误消息

Chinaz.com

  ORA-01031

  • 广告推荐