link$中明文存放了建立dblink的使用者名稱和密碼

安佰勝發表於2010-08-20

 

Dblink建立後字典表dba_db_link中只儲存建立連線時使用使用者名稱,密碼不儲存,實際上在sys使用者下的另一張字典表link$中儲存了明文的使用者密碼,如果出現密碼丟失或者不確認的情況,可以從中獲取明文密碼。

 

測試程式碼如下:

SQL> conn / as sysdba

Connected.

 

建立測試使用者並授予許可權

SQL> create user ab identified by ab default tablespace btest;

 

User created.

 

SQL> grant connect,resource to ab;

 

Grant succeeded.

 

建立資料庫連線

SQL> conn an/an

Connected.

SQL> create database link link_ab connect to ab identified by ab using 'db10';

 

Database link created.

 

SQL> set linesize 200

SQL> set wrap off

 

測試連線可用性

SQL> select * from dual@link_ab;

 

D

-

X

 

Dba_db_links中記錄連線owner,連線名,連線遠端庫試用的使用者,連線標識以及建立時間

SQL> select * from dba_db_links;

 

OWNER      DB_LINK    USERNAME   HOST       CREATED

---------- ---------- ---------- ---------- --------------

AN         LINK_AB    AB         db10       20-8 -10

 

Link$sys使用者下表,需要有許可權才可以檢視

SQL> select * from link$;

select * from link$

              *

ERROR at line 1:

ORA-00942: table or view does not exist

 

 

SQL> conn / as sysdba

Connected.

SQL> select * from link$;

 

OWNER# NAME       CTIME          HOST       USERID     PASSWORD         FLAG

------ ---------- -------------- ---------- ---------- ---------- ----------

58 LINK_AB    20-8 -10           db10       AB         AB                  0

 

查詢到的useridpassword就是遠端資料庫連線的使用者名稱和密碼,都是明文的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13177610/viewspace-671435/,如需轉載,請註明出處,否則將追究法律責任。

相關文章