線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:7708
推到 Plurk!
推到 Facebook!

討論 FireBird 安全性加強

 
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-07 22:43:46 IP:122.126.xxx.xxx 訂閱
唉!頭痛。始終覺得 Firebird 是非常好的資料庫。
但在安全性上個人覺得有些疑慮。所以遲遲不敢大用。

安全性疑慮:
1. 做為資料伺服器,一旦非法用戶取得資料庫檔案下載到本地端就完了,可以直接讀取資料庫無須密碼。
現在黑客木馬很多,實在粉危險。
2. 若為嵌入式通常運用在單機版套裝軟體,而這些軟體通常是安裝在客戶端。基本上要取得或修改檔案是
非常容易的。如果客戶的資料外流,也是很危險。

也有很多人說,資料庫可下載就算是公開了。我覺得防不了高手防一些菜鳥總可以吧。
最起碼有一層過濾,雖然檔案口令加密很容易被破。像是 SQLite 就有這個機制。

突然想到幾種改善方法:
1. 修改Firebird程式碼或DLL加殼。不過僅增加口令,是沒有作用。只要用戶僅拷貝資料檔到網站下載原
程式就可以避開。但可以防止直接修改資料的危險(對嵌入而言)。
2. 透過 Trigger 在資料庫連結時作一些判斷,若非法操作就刪除全部資料。
為了避免修改Trigger程式碼,據說可以透過 Compiled 編譯(不太清楚)。
3. 查看 FreiBird 原文手冊,它建議使用類似 TrueCrypt 文件夾加密解決。
不過,叫客戶花錢買好像說不過去。

還有什麼方法呢...

* 備忘記錄*
編輯記錄
RootKit 重新編輯於 2009-04-07 22:56:18, 註解 無‧
RootKit 重新編輯於 2009-04-08 12:32:32, 註解 無‧
RootKit 重新編輯於 2009-04-08 15:45:05, 註解 無‧
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-07 23:14:31 IP:122.126.xxx.xxx 訂閱
第二點或許可以小小補強一下。是否可行,還要在想一下。
重點在於是否可以刪除 Trigger 的 SourceCode 。而保留可以執行的作用。
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-08 12:30:14 IP:61.222.xxx.xxx 訂閱
測試可以了。
當嘗試連結資料庫的帳號及密碼,若非指定的帳號及密碼時,就強迫刪除全部資料。
雖然有點狠。但也是無可奈何的事。

當然又產生另一個疑惑,如果觸發器能夠中斷連接事件,那麼就不需採取如此積極的手段。

RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-08 15:43:46 IP:61.222.xxx.xxx 訂閱
成功了!...

對我而言 FireBird 還是新手畢竟不是很熟,研讀了許多資料終於搞定。
初期來說,至少可以禁止非法用戶能夠透過第三方工具去瀏覽及修改資料。

FireBird 還是很不錯的資料庫的,很多功能實在是不錯。
我的作法是,透過觸發器在連接 Database 時,檢查目前登入帳號及密碼(指定)若條件不成立將引發一個 Exception 中斷連接。
既使使用 SYSDBA 也不能通過。

接下來刪除 Trigger Source Code 即可。
事實上不刪除 Source Code 應該沒差,因為無法登入資料庫。故無法修改之。

透過這個方法,至少我們可以保證既使用戶拷貝了資料庫,要破解還是有一定的難度(May be 對新手而言)。
編輯記錄
RootKit 重新編輯於 2009-04-08 16:27:39, 註解 無‧
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-18 02:05:20 IP:218.164.xxx.xxx 未訂閱
RootKit  你好:
我不解這句話之意思"透過觸發器在連接 Database 時,檢查目前登入帳號及密碼(指定)若條件不成立將引發一個 Exception 中斷連接。
既使使用 SYSDBA 也不能通過",

1.embed firebird好像可不輸入帳號及密碼即可連接資料庫,用第三方工具如ibexpert好像只須輸入sysdba及mxxxxxxxx即可開啟資料庫,問題是此時會觸發任何一個Trigger嗎?

2.如果是用ibx之TSQLConnection元件之OnConnect事件寫檢查程式碼當然可以做到,問題是此時用第三方工具如ibexpert好像只須輸入sysdba及mxxxxxxxx即可開啟資料庫,

3.還是你的意思是說,用第三方工具如ibexpert開啟資料庫,仍會觸發資料庫的某一個Trigger嗎?如果是可否說清楚點呢? Thank you very much

===================引 用 RootKit 文 章===================
成功了!...

對我而言 FireBird 還是新手畢竟不是很熟,研讀了許多資料終於搞定。
初期來說,至少可以禁止非法用戶能夠透過第三方工具去瀏覽及修改資料。

FireBird 還是很不錯的資料庫的,很多功能實在是不錯。
我的作法是,透過觸發器在連接 Database 時,檢查目前登入帳號及密碼(指定)若條件不成立將引發一個 Exception 中斷連接。
既使使用 SYSDBA 也不能通過。

接下來刪除 Trigger Source Code 即可。
事實上不刪除 Source Code 應該沒差,因為無法登入資料庫。故無法修改之。

透過這個方法,至少我們可以保證既使用戶拷貝了資料庫,要破解還是有一定的難度(May be 對新手而言)。
編輯記錄
ry_lee 重新編輯於 2009-04-18 02:06:25, 註解 無‧
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-04-18 14:27:04 IP:122.126.xxx.xxx 訂閱
您可以參考我寫得 「FireBird 學習日誌」。

Trigger 是本身 Firbird 觸發器機制,幾乎每個成熟的資料庫都會有。
因此無論是使用哪一種連接方式,都會觸發。...
由其 Firbird 是獨大一檔,包含 Trigger 及預儲函數都是寫在同一檔案(*.FDB)中。

用 IBExpert 也會觸發(有人說 ibExpert 是用 FIBPLUS 寫的),本身我也用 IbExpert 來管理資料庫。
記得有一次忘記某些機關,連進都進不去。只好重建資料庫。

事實上原理很簡單 。
因此任何的連結資料庫方式都會(如 IBX,DbX,IBO,FIBPLUS,UniDAC,ZEOSDBO)觸發。

那些檢查的動作,只有自己知道別人無法得知。

===================引 用 ry_lee 文 章===================
RootKit 你好:
我不解這句話之意思"透過觸發器在連接 Database 時,檢查目前登入帳號及密碼(指定)若條件不成立將引發一個 Exception 中斷連接。
既使使用 SYSDBA 也不能通過",

1.embed firebird好像可不輸入帳號及密碼即可連接資料庫,用第三方工具如ibexpert好像只須輸入sysdba及mxxxxxxxx即可開啟資料庫,問題是此時會觸發任何一個Trigger嗎?

2.如果是用ibx之TSQLConnection元件之OnConnect事件寫檢查程式碼當然可以做到,問題是此時用第三方工具如ibexpert好像只須輸入sysdba及mxxxxxxxx即可開啟資料庫,

3.還是你的意思是說,用第三方工具如ibexpert開啟資料庫,仍會觸發資料庫的某一個Trigger嗎?如果是可否說清楚點呢? Thank you very much

===================引 用 RootKit 文 章===================
成功了!...

對我而言 FireBird 還是新手畢竟不是很熟,研讀了許多資料終於搞定。
初期來說,至少可以禁止非法用戶能夠透過第三方工具去瀏覽及修改資料。

FireBird 還是很不錯的資料庫的,很多功能實在是不錯。
我的作法是,透過觸發器在連接 Database 時,檢查目前登入帳號及密碼(指定)若條件不成立將引發一個 Exception 中斷連接。
既使使用 SYSDBA 也不能通過。

接下來刪除 Trigger Source Code 即可。
事實上不刪除 Source Code 應該沒差,因為無法登入資料庫。故無法修改之。

透過這個方法,至少我們可以保證既使用戶拷貝了資料庫,要破解還是有一定的難度(May be 對新手而言)。
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-06-03 16:08:14 IP:61.67.xxx.xxx 未訂閱
我不認為這樣的做法是很好的方法
1.萬一登入者不小心打錯, 是否就一切玩完, 那這無疑給自己添麻煩
2.萬一想透過其他工具進入維護資料庫, 這樣不是挷死自己, 如果不考慮客售後續服務, 那我倒沒有意見
我自己比較常用的做法是, 把重要個資的欄位做加密存入, 即使檔案被人盜取, 看到的也只是一堆無意義加密的數據, 除非透過我自己的程式解開, 一來不用動到資料庫的頭上(如果FB改版), 二來也可達到保密效果
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-06-05 21:56:53 IP:122.126.xxx.xxx 訂閱
本來是不想回的,想想還是稍做說明。

1. 登入帳號或者機關等等。是由程式內建,基本上不會造成困擾。
2. 一套好的系統,將會涵蓋維護資料庫。當然綁售後服務不就是最好的手段嗎!
如果你連帳號及密碼都會遺忘,那我就認了。

瞭解含意的,就知道我的意思。
資料欄位加密,是不得不的手段。缺點一方面將導致 SQL 語法難度的增加甚至無法查詢範圍。
二來無法統計,既使做到也很麻煩。三來解密將會浪費查詢效率,尤其資料一多。
這種方法的,事實上還有進階的手段又可以避開上面的缺點。這裡就不多說了。

當初已經將所有因素都考慮進去了。
才覺得從連結時檢查(FB改版也無須修改),是目前最好的方法。
不用在白費心思了,我連FireBird的源碼都看了一遍。......

===================引 用 P.D. 文 章===================
我不認為這樣的做法是很好的方法
1.萬一登入者不小心打錯, 是否就一切玩完, 那這無疑給自己添麻煩
2.萬一想透過其他工具進入維護資料庫, 這樣不是挷死自己, 如果不考慮客售後續服務, 那我倒沒有意見
我自己比較常用的做法是, 把重要個資的欄位做加密存入, 即使檔案被人盜取, 看到的也只是一堆無意義加密的數據, 除非透過我自己的程式解開, 一來不用動到資料庫的頭上(如果FB改版), 二來也可達到保密效果
mybanksoft
初階會員


發表:8
回覆:37
積分:29
註冊:2007-12-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-08-04 22:15:11 IP:211.22.xxx.xxx 訂閱
恕刪
------
努力學習Rave
編輯記錄
mybanksoft 重新編輯於 2009-08-18 09:34:14, 註解 無‧
vbkiller
一般會員


發表:65
回覆:28
積分:18
註冊:2007-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-11-11 01:47:52 IP:125.224.xxx.xxx 未訂閱
確實如你所說:

"才覺得從連結時檢查(FB改版也無須修改),是目前最好的方法。" ,FIREBIRD真是一個不錯的資料庫系統

===================引 用 RootKit 文 章===================
本來是不想回的,想想還是稍做說明。

1. 登入帳號或者機關等等。是由程式內建,基本上不會造成困擾。
2. 一套好的系統,將會涵蓋維護資料庫。當然綁售後服務不就是最好的手段嗎!
如果你連帳號及密碼都會遺忘,那我就認了。

瞭解含意的,就知道我的意思。
資料欄位加密,是不得不的手段。缺點一方面將導致 SQL 語法難度的增加甚至無法查詢範圍。
二來無法統計,既使做到也很麻煩。三來解密將會浪費查詢效率,尤其資料一多。
這種方法的,事實上還有進階的手段又可以避開上面的缺點。這裡就不多說了。

當初已經將所有因素都考慮進去了。
才覺得從連結時檢查(FB改版也無須修改),是目前最好的方法。
不用在白費心思了,我連FireBird的源碼都看了一遍。......

===================引 用 P.D. 文 章===================
我不認為這樣的做法是很好的方法
1.萬一登入者不小心打錯, 是否就一切玩完, 那這無疑給自己添麻煩
2.萬一想透過其他工具進入維護資料庫, 這樣不是挷死自己, 如果不考慮客售後續服務, 那我倒沒有意見
我自己比較常用的做法是, 把重要個資的欄位做加密存入, 即使檔案被人盜取, 看到的也只是一堆無意義加密的數據, 除非透過我自己的程式解開, 一來不用動到資料庫的頭上(如果FB改版), 二來也可達到保密效果
mybanksoft
初階會員


發表:8
回覆:37
積分:29
註冊:2007-12-25

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-11-11 10:56:24 IP:211.22.xxx.xxx 訂閱
連線檢查?
可以方便講清楚一點嗎?或是給個簡單的範例。因為僅憑現有的資料,我實作不出來。
------
努力學習Rave
系統時間:2024-05-06 7:21:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!