0

我正在使用c#(VS2010 FrameWork:v4.0)和SqlServer 2012來構建應用程序。我在網上搜索,找到方法來防止複製這個系統,我認爲唯一需要防止複製的部分是數據庫。從複製保護Winform應用程序/ Sql數據庫

我想你給我提供一些關於這個問題的建議。我需要了解以下答案/意見:

  1. 我是否也需要保護應用程序(可執行文件),從與數據庫複製?如果是,這是否意味着如果用戶丟失應用程序文件,我必須爲用戶提供一個新副本來安裝它?

  2. 一個想法,我在我的腦海,保護DB是保存一些口令/密鑰在DB(在VARBINARY的形式),並且在設備登錄(運行應用程序)的應用程序檢查設備的(MAC地址)是否保存,然後應用程序要求輸入密鑰。一旦使用密鑰,設備的MAC地址將與密鑰一起保存。這是一件正確的事情嗎?有沒有關於它的建議?

  3. 如果我需要保護應用程序部分不被複制,是否有任何想法如何做?

  4. 我也看到了有關客戶端PC上安裝的SQLExpress,並且應該保護數據庫文件從操控,所以我必須要提供一種方法來升級在未來/更新數據庫的腳本,而不是一個替代客戶端的DB新的一個。我想在應用程序中提供一個由密碼保護的窗體,並且我可以在窗體的文本框中編寫腳本(__For Example:Alter Proc_ ...),然後保存它。我可以這樣做嗎?或者這將是一個愚蠢的事情嗎?

在此先感謝

+0

您的帖子中有很多流行語,但並不是一個真正適合的問題陳述。唯一相關的是_「防止複製這個系統」_。什麼是「這個系統」?如果它是您在本地安裝的應用程序和數據庫,則您可以執行的操作很少。 – CodeCaster

+0

是的,我的意思是** DB +應用程序在一起**,由* system *。保存密鑰然後將它們與PC的MAC地址相關聯的想法是正確的做法嗎?但是如果我保存了數據庫中的20個密鑰並且我的客戶端有21臺個人電腦可以使用?請記住,這是一個** winform應用程序** *(它不在一個在線服務器上託管,它可能只用於本地網絡)*。 – Shoshotto

回答

1

你不能。任何相反的要求是蛇油。

保護您的應用程序的唯一方法是將其作爲服務提供,託管在您擁有/控制的主機上。

要找到一種方法來防止用戶使用APP + DB未經我的許可(例如,使用鍵註冊)

這是可能的應用程序只能運行在指定的硬件在哪裏創建許可方案。您的應用程序需要使用主機指紋(例如.net MAC),將其上傳到您承載的服務,使用私鑰簽名指紋並將簽名提供給應用程序,然後應用程序使用嵌入的公鑰驗證指紋簽名,然後運行應用程序。雖然這聽起來可行,但有很多方法可以並且經常出錯。用戶頻繁更換指紋(例如硬件更新)。指紋難以在虛擬環境中實施(虛擬機可以編輯其MAC)。對於願意攻擊並繞過你的保護的中度黑客來說,加強應用程序代碼是非常困難的,基本上不可能對付一個熟練的黑客來加固應用程序代碼。

但你也問過關於數據庫和標記問題sql-server。到第一部分我只能對我以前的答案翻一番:它是不可能來保護數據庫不被現場管理員隨意訪問和/或修改。有安全的方式來訪問和修改數據庫,所以你可以證明篡改並採取相應的行動(拒絕支持或收取額外費用)。但是你無法阻止它。最後你要求的是DRM

+0

保存密鑰然後將它們與PC的MAC地址相關聯的想法是正確的做法嗎?但是如果我保存了數據庫中的20個密鑰並且我的客戶端有21臺個人電腦可以使用?請記住,這是一個winform應用程序(它不在一個在線服務器上託管,它可能僅用於本地網絡)。@ RemusRunsanu我認爲你的意思是在線服務。我對嗎?如果沒有,請讓你更清楚? – Shoshotto

+0

如果我可以管理** ** PREVENT使用文件**或** LIMIT使用另一臺計算機上的文件**,則可以使用用戶複製文件。 _(複製的文件將被粘貼到)_。這是我原來的帖子的重點。要找到一種方法來防止用戶未經我的許可使用APP + DB(例如使用密鑰註冊) – Shoshotto

+0

非常感謝@RemusRunsanu。可以編輯物理MAC地址嗎?我認爲這是不可能的。還是你的意思是黑客可以克隆或以某種方式顯示掩碼作爲他們的物理MAC地址? – Shoshotto