PB應用的資料庫聯接的安全防範

2021-08-31 13:32:24 字數 2758 閱讀 8473

隨著網際網路的深入人心,網路技術不斷發展,資料的保密性要求也越來越高。在通常的server/client方式mis開發中,由於程式要與資料庫伺服器保持聯接,為了程式的靈活和擴充性,聯接引數(使用者id和登入口令)又不能在程式中寫死(其實寫死也不是一種好的方法),一般的方法無外乎有兩種:其一是把聯接引數存放在登錄檔中;其二就是直接讀ini檔案。

而綜上幾種方法安全性都不太好,給人以可乘之機。 

本人找到一種方法,可以解決資料庫應用的安全性問題,通過ini檔案和資料庫的巧妙處理,在程式中提供使用者一種介面,可以隨時修改資料庫的聯接引數,而又不給外人以蛛絲馬跡,做到神不知鬼不覺。

實現方法如下: 

1、建立ini檔案,記錄資料庫聯接的一些方便程式分發的引數dbms、servername、logid具體如下: 

//建立成ini檔案(rsgl.ini) 

[database] 

dbms=o84 oracle 8.0.4 

servername=gxmistest //資料庫伺服器名 

logid=rsgl //實際的資料庫登入使用者 

然後,在資料庫中建立乙個中間使用者pub,登入口令pub,賦予pub使用者connect,resource許可權,再在其中建立表create table tbl_pub_passshadow (passshadow varchar2(50) not null)用於存放實際的資料庫聯接的登入口令(當然要經過加密)。加密函式網上多的是,在此就不累述。我自已建立了乙個字串加密函式f_password(string old_str,string new_str,integer jm_mode),jm_mode引數用以區分函式的加(解)密,old_str、new_str兩引數分別為加(解)密的字串。

-- 建立登陸,無密碼策略,密碼不過期

create login [test_l] with password='pwd1213',default_database=[db_1], check_expiration=off, check_policy=off;

go use db_1;

go-- 建立使用者

create user [test_u] from login [test_l];

go -- 授權

grant select on dbo.table1 to [test_u];

go

附:解密源**

函式名稱:f_decryptpbpassword()

引數:     as_orginalpassword string 原始密碼

返回值: string 解密後文字

功能描述:解密pb資料庫連線描述密碼

建立人:  康劍民

建立日期:2006-04-27

版本號: v1.0

string ls_temp,ls_return=''

integer i,li_count,li_ascii

nvo_numerical lnv_numerical

if len(as_orginalpassword) < 2 or as_orginalpassword = '00' then return ''

as_orginalpassword = left(reverse(as_orginalpassword),len(as_orginalpassword) - 2)

li_count = ceiling(len(as_orginalpassword) / 2)

for i = 1 to li_count

ls_temp = mid(as_orginalpassword,(i - 1) * 2 + 1,2)

li_ascii = lnv_numerical.of_hextodecimal(ls_temp)

ls_temp = char(li_ascii)      

ls_return = ls_return + ls_temp

next

return ls_return

函式名稱:of_hextodecimal()

引數:     as_hexdata string 16進製制資料

返回值: unsignedlong 10進製資料

功能描述:16進製制資料轉為10進製資料

建立人:  康劍民

建立日期:2006-04-27

版本號:v1.0

char        lch_char

unsignedlong       lul_decimal=0

integer li_dec[48 to 70], i, li_len

for i = 48 to 57

li_dec[i] = i - 48

next

for i = 65 to 70

li_dec[i] = i - 55

next

as_hexdata = lower(as_hexdata)

lch_char = as_hexdata

li_len = len (as_hexdata)

for i = 1 to li_len

choose case lch_char[i]

case '0' to '9', 'a' to 'f'

lul_decimal = lul_decimal * 16 + li_dec[asc(lch_char[i])]

case else

return lul_decimal

end choose   

next

return lul_decimal

寫作日期:2006-05-15

資料庫安全防護幾點介紹

企業最有價值的資產通常是其資料庫中的客戶或產品資訊。因此,在這些企業中,資料庫管理的乙個重要部分就是保護這些資料免受外部攻擊,及修復軟 硬體故障。在大多數情況下,軟硬體故障通過資料備份機制來處理。多數資料庫都自帶有內建的工具自動完成整個過程,所以這方面的工作相對輕鬆,也不會出錯。但麻煩卻來自另一面 ...

資料安全防護之打造安全 mdb資料庫

什麼是mdb資料庫呢?凡是有點製作 經驗的 網路 管理員都知道,目前使用 iis asp access 這套組合方式建立 是最流行的,大多數中小型internet 都使用該 但隨之而來的安全 問題 mdb資料庫是沒有安全防範 一 危機起因 二 常用的補救方法 1 把資料庫的名字進行修改,並且放到很深...

黑客非法探取密碼的原理及安全防範

一 非法獲取password的原理 edit控制項是windows的乙個標準控制項,當把其password屬性設為true時,就會將輸入的內容遮蔽為星號,從而達到保護的目的。雖然我們看來都是星號,但程式中的edit控制項實際仍是使用者輸入的密碼,應用程式可以獲取該控制項中的密碼,其他應用程式也可以通...