动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库学院 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.Oracle iAS 10g Report Server C.
.oracle8i学习笔记(1).
.Oracle PL/SQL语言基础(2).
.DBA 该做的和不该做的.
.存储参数(storage子句)含义及设.
.基于 Linux 和 MiniGUI 的嵌入式.
.ORACLE建库过程与操作.
.在Oracle中监控和跟踪索引使用情.
.Oracle数据库系统修复多个安全漏.
.[Oracle]一次数据库性能问题的tu.
.关于Oracle数据库各种存储形式的.
.ORACLE 9I FOR AIX 5L 的安装.
.PL/SQL学习笔记(六).
.[总结]sga中的名词解释!.
.一个JAVA连接ORACLE的例子.
.ORACLE常用傻瓜问题1000问全集(.
.redhat 8.0下的vsftp的配置.
.oracle开发中序列的使用.
.win2000+Tomcat5.0.27+Oracle8.1.
.oracle分析函数(二).

[基础]9i新特性之二安全篇

发表日期:2008-2-9 |



---txfy
9i新特性之二安全篇
这篇文章主要讲解应用程序客户端访问数据库的新特性。有些地方理解不好
写得也不是很好,请大家帮忙指正,谢谢!
9I安全认证拥有
..解决了阻止未经认证的用户通过其他客户端访问数据的问题.
..在隐藏密码的实现方面有了比以前更好的机制.
..角色的有效性是通过一个包来检测而不是一个口令
..应用设置的概念在8i中已经作了介绍,8i中细粒度访问控制能够达到
  制作有效的私有数据库,而在9i中应用设置已经可以用一个角色来实
  现,因此提高了私有数据库的可用性.
---------------------------------------------------------------
为了确认一个角色是否有效,必须调用关联的存储过程,这个存储过
程可以通过使用sys_context('userenv',nnn)来制定一系列的额外
检查.nnn可以是ip_address,proxy_account等.
(举例,我们可以在存储过程和触发器里调用select sys_context
('userenv',ip_address) from dual得到客户端的ip,然后根据
这个资料进行判定.sys_context的具体用法如下:
select 
        SYS_CONTEXT('USERENV','TERMINAL') terminal, 
        SYS_CONTEXT('USERENV','LANGUAGE') language, 
        SYS_CONTEXT('USERENV','SESSIONID') sessionid, 
        SYS_CONTEXT('USERENV','INSTANCE') instance, 
        SYS_CONTEXT('USERENV','ENTRYID') entryid, 
        SYS_CONTEXT('USERENV','ISDBA') isdba, 
        SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory, 
        SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency, 
        SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar, 
        SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') nls_date_format, 
        SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language, 
        SYS_CONTEXT('USERENV','NLS_SORT') nls_sort, 
        SYS_CONTEXT('USERENV','CURRENT_USER') current_user, 
        SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid, 
        SYS_CONTEXT('USERENV','SESSION_USER') session_user, 
        SYS_CONTEXT('USERENV','SESSION_USERID') session_userid, 
        SYS_CONTEXT('USERENV','PROXY_USER') proxy_user, 

        SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid, 
        SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain, 
        SYS_CONTEXT('USERENV','DB_NAME') db_name, 
        SYS_CONTEXT('USERENV','HOST') host, 
        SYS_CONTEXT('USERENV','OS_USER') os_user, 
        SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name, 
        SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address, 
        SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol, 
        SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id, 
        SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id, 
        SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE') authentication_type, 
        SYS_CONTEXT('USERENV','AUTHENTICATION_DATA') authentication_data 
from dual 
------------------------------------------------------------------------
9i以前的版本,认证角色是通过passWord的方法,将用户名,口令写入应用程序来进行连接.
这样的缺点是,假如口令在客户端被解析出来,任何应用程序都能够访问你的数据.
下面我们看一个9i认证角色的例子.
CREATE ROLE salesuser
IDENTIFIED USING sh.sales_chk;

CREATE OR REPLACE PROCEDURE sales_chk
AUTHID CURRENT_USER IS
ipchk STRING(30);
BEGIN /* Only certain IP addresses allowed */
SELECT SYS_CONTEXT(’USERENV’,’IP_ADDRESS’)
INTO ipchk FROM DUAL;
IF SUBSTR(ipchk,1,4) != ’192.’
THEN RETURN; END IF; /* Fail silently */
DBMS_SESSION.SET_ROLE(’SALESUSER’); /* Enable */
END;
/
这个过程做到,假如不在192网段,这个角色失效.
---------------------------------------------------------------------
全局应用设置
一个设置现在能够被全局化和共享.
全局化应用设置就是:
    ..比每个进程一个设置更节省资源.
    ..利用有效私有数据库能够更好的适应基于web的应用.
    ..仍然可以通过identifier验证访问权限.
    ..更适应多路连接.
   Oracle9i的有效私有数据库特性提供了连接池以答应多重会话使用一个
或多个全局应用设置,而不需要为每个用户建立一个应用设置.全局应用
设置为基于web的应用提供了额外的灵活的设置.在多重会话中重复利用
普通应用设置大大提高了性能。
    在ebusiness应用中,应用用户代理认证可以使用公用应用设置来提高适

应性和性能。通过公用应用设置的一次设立代替为每个会话独立设置初
始化应用设置这种方式进行会话级重用提高了性能。
    为了决定当前会话的运行环境以符合细粒度访问控制,中间件必须为
每一个应用设定应用设置。全局设置答应中间件把各种应用设置存储在
实例里并且在会话建立时为一个用户会话指派设置。这个设置也就成为
了会话的运行设置。这将大大减小用户会话在应用连接池环境中的建立
时间。
---------------------------------------------------------------
治理全局应用设置。
一些接口已经被加到dbms_session包里来治理客户端会话的应用设置。
包括
   ..set_context
   ..clear_context
   ..set_identifier
   ..clear_identifier
  为了支持通过中间件应用治理的会话连接池,对于dbms_session接口的
治理应用设置也为每一个应用设置增加了一个客户端认证。在这种方式
下,我们可以全局治理应用设置而客户端仅仅看到为他们设置的应用设
置。
  中间件应用器服务能够使用set_context来为一个制定的客户id设置应用
设置.那么,当分配数据库连接来处理客户端需求,应用服务器需要执行
set_identifier来表示这个应用会话的id.那么,每次客户端调用
sys_context,仅仅被指派给这个验证用户的设置被返回。
--------------------------------------------------------------
全局应用设置函数。(举例)
治理员通过以下指令建立全局设置。
SQL> CREATE CONTEXT webhr USING hr.init AccessED GLOBALLY;
应用服务器启动将为HR用户建立多重连接。
当用户JOHN连接到应用服务器后,JOHN不是一个数据库用户。应
用服务器将在应用里鉴别JOHN,并且为这个连接0设置一个临时的会
话ID,4523,基于唯一应用会话属性,这个会话ID作为COOKIE或者
应用服务器的维护的一部分返回用户JOHN的浏览器。
  应用服务器为这个客户端初始应用设置称为HR.INIT包,它执行
DBMS_SESSION.SET_CONTEXT(’webhr’,’id’, ’JOHN’, ’HR’,4523);
DBMS_SESSION.SET_CONTEXT(’webhr’,’dep’,’sales’,’HR’,4523);
例子:
CREATE CONTEXT webhr USING hr.init ACCESSED GLOBALLY;
DBMS_SESSION.SET_CONTEXT(’webhr’,’id’,’JOHN’,’HR’,4523);
DBMS_SESSION.SET_IDENTIFIER(4523);

SYS_CONTEXT calls are in John’s context

DBMS_SESSION.CLEAR_IDENTIFIER(4523);
当用户JOHN用应用服务器访问数据,应用服务器找到所有登陆的
会话,并执行DBMS_SESSION.SET_IDENTIFIER(4523);所有的这个
会话的SYS_CONTEXT将只返回属于这个客户端的应用程序设置,
例如SYS_CONTEXT('WEBHR','ID') 将只返回'JOHN'.

最后注重:假如数据访问是通过有效私有数据库来治理的,建立
设置并不能自动限制数据访问。

上一篇:oracle的高级复制 人气:392
下一篇:[Learn Oracle From OTN]基于成本的优化器技术内幕 人气:415
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-4 天空网络电影系统SKYUC v2.5.1 B
2008-7-4 PHPDug v2.0 多国语言版
2008-7-4 Drupal v7.x-dev Build 080704
2008-7-4 乐学LBBS无限级目录图片直读系统
2008-7-4 生成静态的美女小偷程序 v1.2
2008-7-4 顶级DJ舞曲网 v1.2 黑色正式版
2008-7-4 生活名片
2008-7-4 轩魂ASP中文验证码
2008-7-4 ip138手机归属地小偷
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報