iT邦幫忙

1

C# 怎麼保護重要資料

如題
網路上有一些工具
可以反組譯exe或dll
當我需要寫windowsForm程式連mysql
如何做可以讓有心人從code看不到資料庫資訊

(面試被考倒 TAT)

微軟的Dotfuscator可以試試!官方推薦!
或是建議其他廠商的混淆器或擾亂器可以大幅提高反組譯的難度,能突破已屬不易了。最建議方法應該是把SQL相關查詢功能設置於後台或雲端,以IP與帳密限制客戶端,用web service 或其他方式呼叫來取得資料。
wwx iT邦好手 1 級 ‧ 2018-06-30 10:34:42 檢舉
看到覺得好笑,

要先區分有心人是(非使用者)還是(使用者)
後者若透過網路交易進行防護的話漏洞更多,
前者可以將相關資訊加密後,只放加密資料於程式碼中,
程式運作過程中則需透過解密程序來還原資料,
這樣就無法直接從binary code找到相關資訊,
即使加殼後被脫殼也是沒辦法直接找到相關資訊,

程式運作過程中的還原動作則要設計一些智慧防駭,
來擋一些高級的編程駭客(指使用類似TRW或SoftICE的駭客),
這要看自己當駭客的功力有多高,
自然就能設計出防護相對等級以下的駭客

至於若要從source code看不到特定資訊也是另有方法
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
暐翰
iT邦大師 1 級 ‧ 2018-06-29 09:33:52
最佳解答

.Net平台的程式很難不被反編譯的。
更不要說重要資料(資料庫資訊)放在使用者端原本就是一個嚴重資安問題。

通用解決方式
架設一個Server,資料庫、資安重要資料都在Server做操作。
讓使用端(windowsForm)藉由網路呼叫Server提供的接口取得資料。

舉例:
Server提供一個驗證是否帳號密碼正確的接口
使用者端只能呼叫它,而不能直接操作資料庫取得驗證帳號密碼以外的資訊(如資料庫IP、帳號、密碼)。

現在手機APP都是這樣的~
裡面是不放相關資料庫連結帳號密碼的資訊呢~
都透過遠端網頁驗證及存取資料~

1
fuzzylee1688
iT邦研究生 3 級 ‧ 2018-06-29 09:27:09

可發動Web Service動態取得資料庫Connect String資訊.

fuzzylee1688 iT邦研究生 3 級 ‧ 2018-06-29 10:52:59 檢舉

缺點:要有點專職授權資管人員, 還有萬一授權系統掛點了, 那整個公司可就人仰馬翻了. 呵.

我要發表回答

立即登入回答