亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2641 | 回復(fù): 5
打印 上一主題 下一主題

[基礎(chǔ)]9i新特性之二安全篇 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2004-02-20 16:26 |只看該作者 |倒序?yàn)g覽
---txfy
9i新特性之二安全篇
這篇文章主要講解應(yīng)用程序客戶端訪問(wèn)數(shù)據(jù)庫(kù)的新特性。有些地方理解不好
寫(xiě)得也不是很好,請(qǐng)大家?guī)兔χ刚x謝!
9I安全認(rèn)證擁有
..解決了阻止未經(jīng)認(rèn)證的用戶通過(guò)其他客戶端訪問(wèn)數(shù)據(jù)的問(wèn)題.
..在隱藏密碼的實(shí)現(xiàn)方面有了比以前更好的機(jī)制.
..角色的有效性是通過(guò)一個(gè)包來(lái)檢測(cè)而不是一個(gè)口令
..應(yīng)用設(shè)置的概念在8i中已經(jīng)作了介紹,8i中細(xì)粒度訪問(wèn)控制能夠達(dá)到
  制作有效的私有數(shù)據(jù)庫(kù),而在9i中應(yīng)用設(shè)置已經(jīng)可以用一個(gè)角色來(lái)實(shí)
  現(xiàn),因此提高了私有數(shù)據(jù)庫(kù)的可用性.
---------------------------------------------------------------
為了確認(rèn)一個(gè)角色是否有效,必須調(diào)用關(guān)聯(lián)的存儲(chǔ)過(guò)程,這個(gè)存儲(chǔ)過(guò)
程可以通過(guò)使用sys_context('userenv',nnn)來(lái)制定一系列的額外
檢查.nnn可以是ip_address,proxy_account等.
(舉例,我們可以在存儲(chǔ)過(guò)程和觸發(fā)器里調(diào)用select sys_context
('userenv',ip_address) from dual得到客戶端的ip,然后根據(jù)
這個(gè)資料進(jìn)行判斷.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以前的版本,認(rèn)證角色是通過(guò)password的方法,將用戶名,口令寫(xiě)入應(yīng)用程序來(lái)進(jìn)行連接.
這樣的缺點(diǎn)是,如果口令在客戶端被解析出來(lái),任何應(yīng)用程序都能夠訪問(wèn)你的數(shù)據(jù).
下面我們看一個(gè)9i認(rèn)證角色的例子.
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;
/
這個(gè)過(guò)程做到,如果不在192網(wǎng)段,這個(gè)角色失效.
---------------------------------------------------------------------
全局應(yīng)用設(shè)置
一個(gè)設(shè)置現(xiàn)在能夠被全局化和共享.
全局化應(yīng)用設(shè)置就是:
    ..比每個(gè)進(jìn)程一個(gè)設(shè)置更節(jié)省資源.
    ..利用有效私有數(shù)據(jù)庫(kù)能夠更好的適應(yīng)基于web的應(yīng)用.
    ..仍然可以通過(guò)identifier驗(yàn)證訪問(wèn)權(quán)限.
    ..更適應(yīng)多路連接.
   oracle9i的有效私有數(shù)據(jù)庫(kù)特性提供了連接池以允許多重會(huì)話使用一個(gè)
或多個(gè)全局應(yīng)用設(shè)置,而不需要為每個(gè)用戶建立一個(gè)應(yīng)用設(shè)置.全局應(yīng)用
設(shè)置為基于web的應(yīng)用提供了額外的靈活的設(shè)置.在多重會(huì)話中重復(fù)利用
普通應(yīng)用設(shè)置大大提高了性能。
    在ebusiness應(yīng)用中,應(yīng)用用戶代理認(rèn)證可以使用公用應(yīng)用設(shè)置來(lái)提高適
應(yīng)性和性能。通過(guò)公用應(yīng)用設(shè)置的一次設(shè)立代替為每個(gè)會(huì)話獨(dú)立設(shè)置初
始化應(yīng)用設(shè)置這種方式進(jìn)行會(huì)話級(jí)重用提高了性能。
    為了決定當(dāng)前會(huì)話的運(yùn)行環(huán)境以符合細(xì)粒度訪問(wèn)控制,中間件必須為
每一個(gè)應(yīng)用設(shè)定應(yīng)用設(shè)置。全局設(shè)置允許中間件把各種應(yīng)用設(shè)置存儲(chǔ)在
實(shí)例里并且在會(huì)話建立時(shí)為一個(gè)用戶會(huì)話指派設(shè)置。這個(gè)設(shè)置也就成為
了會(huì)話的運(yùn)行設(shè)置。這將大大減小用戶會(huì)話在應(yīng)用連接池環(huán)境中的建立
時(shí)間。
---------------------------------------------------------------
管理全局應(yīng)用設(shè)置。
一些接口已經(jīng)被加到dbms_session包里來(lái)管理客戶端會(huì)話的應(yīng)用設(shè)置。
包括
   ..set_context
   ..clear_context
   ..set_identifier
   ..clear_identifier
  為了支持通過(guò)中間件應(yīng)用管理的會(huì)話連接池,對(duì)于dbms_session接口的
管理應(yīng)用設(shè)置也為每一個(gè)應(yīng)用設(shè)置增加了一個(gè)客戶端認(rèn)證。在這種方式
下,我們可以全局管理應(yīng)用設(shè)置而客戶端僅僅看到為他們?cè)O(shè)置的應(yīng)用設(shè)
置。
  中間件應(yīng)用器服務(wù)能夠使用set_context來(lái)為一個(gè)制定的客戶id設(shè)置應(yīng)用
設(shè)置.那么,當(dāng)分配數(shù)據(jù)庫(kù)連接來(lái)處理客戶端需求,應(yīng)用服務(wù)器需要執(zhí)行
set_identifier來(lái)表示這個(gè)應(yīng)用會(huì)話的id.那么,每次客戶端調(diào)用
sys_context,僅僅被指派給這個(gè)驗(yàn)證用戶的設(shè)置被返回。
--------------------------------------------------------------
全局應(yīng)用設(shè)置函數(shù)。(舉例)
管理員通過(guò)以下指令建立全局設(shè)置。
SQL>; CREATE CONTEXT webhr USING hr.init ACCESSED GLOBALLY;
應(yīng)用服務(wù)器啟動(dòng)將為HR用戶建立多重連接。
當(dāng)用戶JOHN連接到應(yīng)用服務(wù)器后,JOHN不是一個(gè)數(shù)據(jù)庫(kù)用戶。應(yīng)
用服務(wù)器將在應(yīng)用里鑒別JOHN,并且為這個(gè)連接0設(shè)置一個(gè)臨時(shí)的會(huì)
話ID,4523,基于唯一應(yīng)用會(huì)話屬性,這個(gè)會(huì)話ID作為COOKIE或者
應(yīng)用服務(wù)器的維護(hù)的一部分返回用戶JOHN的瀏覽器。
  應(yīng)用服務(wù)器為這個(gè)客戶端初始應(yīng)用設(shè)置稱(chēng)為HR.INIT包,它執(zhí)行
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);
當(dāng)用戶JOHN用應(yīng)用服務(wù)器訪問(wèn)數(shù)據(jù),應(yīng)用服務(wù)器找到所有登陸的
會(huì)話,并執(zhí)行DBMS_SESSION.SET_IDENTIFIER(4523);所有的這個(gè)
會(huì)話的SYS_CONTEXT將只返回屬于這個(gè)客戶端的應(yīng)用程序設(shè)置,
例如SYS_CONTEXT('WEBHR','ID') 將只返回'JOHN'.

最后注意:如果數(shù)據(jù)訪問(wèn)是通過(guò)有效私有數(shù)據(jù)庫(kù)來(lái)管理的,建立
設(shè)置并不能自動(dòng)限制數(shù)據(jù)訪問(wèn)。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2004-02-20 16:51 |只看該作者

[基礎(chǔ)]9i新特性之二安全篇

可能有大部分用不到,跟開(kāi)發(fā)關(guān)系大些,有空可以看看!

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2004-03-01 15:17 |只看該作者

[基礎(chǔ)]9i新特性之二安全篇

我用了一下例子:
drop role SALESUSER;
-- Create the role
create role SALESUSER
  identified USING sh.sales_chk;
grant connect to SALESUSER;

drop user TEST cascade;
-- Create the user
create user TEST
  identified by test
  default tablespace USERS
  temporary tablespace TEMP
  profile DEFAULT;
-- Grant/Revoke role privileges
--grant connect to TEST;
grant salesuser to TEST ;
--with admin option;
-- Grant/Revoke system privileges
grant unlimited tablespace to TEST;


CREATE OR REPLACE PROCEDURE sh.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) <>; '191.' THEN
--  RAISE_APPLICATION_ERROR(-20101,'操作失敗!');
  RETURN;
END IF; /* Fail silently */
DBMS_SESSION.SET_ROLE('SALESUSER'); /* Enable */
END;

我的IP地址是'192.*******'
登陸test用戶,卻可以登陸,按照您說(shuō)的應(yīng)該不能登陸的,能否更加詳細(xì)說(shuō)明一下,謝謝!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2004-03-02 18:13 |只看該作者

[基礎(chǔ)]9i新特性之二安全篇

好東西,就一定得支持一下

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2004-03-04 10:16 |只看該作者

[基礎(chǔ)]9i新特性之二安全篇

從下面的例子你可以看出角色的包必須手工執(zhí)行,而不是登陸時(shí)自動(dòng)執(zhí)行,所以你如果想應(yīng)用這個(gè)特性,你的這個(gè)用戶必須有connect權(quán)限,并且有執(zhí)行這個(gè)包的權(quán)限。
SQL>; connect system/manager1@sara
Connected.
SQL>; drop role salesuser;

Role dropped.

SQL>; drop user test;

User dropped.

SQL>; CREATE ROLE salesuser IDENTIFIED USING system.sales_chk;

Role created.

SQL>; create user test identified by test;

User created.

SQL>; grant connect to salesuser;

Grant succeeded.

SQL>; grant connect , salesuser to test;

Grant succeeded.

SQL>; CREATE OR REPLACE PROCEDURE system.sales_chk
2 AUTHID CURRENT_USER IS
3 ipchk STRING(30);
4 BEGIN /* Only certain IP addresses allowed */
5 SELECT SYS_CONTEXT('USERENV','IP_ADDRESS')
6 INTO ipchk FROM DUAL;
7 IF SUBSTR(ipchk,1,3) != '152'
8 THEN RETURN; END IF; /* Fail silently */
9 DBMS_SESSION.SET_ROLE('SALESUSER'); /* Enable */
10 END;
11 /

Procedure created.

SQL>; grant execute on system.sales_chk to test;

Grant succeeded.

SQL>; alter user test default role all except salesuser;

User altered.

SQL>; select SYS_CONTEXT('USERENV','IP_ADDRESS') from dual;

SYS_CONTEXT('USERENV','IP_ADDRESS')
--------------------------------------------------------------------------------
152.69.113.236

SQL>; connect test/test@sara
Connected.
SQL>; select * from session_roles;

ROLE
------------------------------------------------------------
CONNECT

SQL>; exec system.sales_chk;

PL/SQL procedure successfully completed.

SQL>; select * from session_roles;

ROLE
------------------------------------------------------------
SALESUSER
CONNECT

SQL>;

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2004-03-05 11:23 |只看該作者

[基礎(chǔ)]9i新特性之二安全篇

txfy:
  Thanks!
這個(gè)我懂了,謝謝,再問(wèn)一個(gè)問(wèn)題,用戶登陸的時(shí)候,能否寫(xiě)一個(gè)自動(dòng)執(zhí)行的過(guò)程,如果可以,是否還需要參數(shù)的配置,謝了!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP