2012-07-16 161 views
1

強制許可證比方說,我們有將是兩個從本地託管Web應用程序

  • 託管的可用的解決方案通過互聯網
  • 能爲本地安裝用作訪問Web應用程序一個「內部網」應用程序

什麼是強制執行此Web應用程序許可的最佳方式,實質上使得打開/關閉客戶端訪問變得容易。我在想的流動會是這樣的:

客戶端在本地安裝--->與中央服務器授權 - >允許/ 拒絕訪問

而且,我希望能夠到確保我們可以提供免費試用版,從本質上打開和關閉應用程序的某些功能。我們還必須考慮如果我們「停業」會發生什麼事情。

+3

客戶的風險敞口如何,當您停業並且中央服務器不存在時?他們可以修復他們的內部網安裝嗎?如果您沒有很好的答案,可能會阻止您的產品採用這種授權服務器。 – 2012-07-16 15:00:03

回答

4

你有正確的想法,

使用中央服務器(這可能是您的託管解決方案),

如果您在您的代管(外部)解決方案構建許可檢查只需要添加一個網絡請求需要的許可證密鑰的加密後, EG

請求{域}

https://{domain}.{tdl}/licenceValid/internal 

郵政查詢字符串

licenceCrypt={licenceKey(though SHA1)}&companyId={company_id} 

做你的支票,然後返回一個字符串,JSON,一旦你有一個純文本版本的工作,那麼你可以介紹加密,因此你不能發送純文本雖然互聯網

Succsess : {'status':'OK','expire':'20/07/2012 00:00:00', 'check':'18/07/2012 00:00:00'} 
Fail  : {'status':'FAIL','Message':'Licence has expired'} 

然後用這個信息緩存結果。然後,您可以從文件加載此信息,並在日期小於當前日期時檢查檢查值。但是,如果下載失敗且許可證尚未過期,請繼續讓他們使用應用程序,但會顯示通知,告知他們許可證驗證出錯。許可證將在{date}上過期,如果許可證從緩存日期塊到期,應用程序告訴他們他們需要檢查服務器與互聯網的連接,如果這不起作用,請給您打電話。

如果所有其他都失敗了,您可以使用帶有一個小應用程序的筆式驅動器彈出來更新那裏有新許可證詳細信息的緩存文件,以便他們可以再次使用該軟件,現在用於緩存我會建議您使用2路加密E.G base64,但我會推薦一個更強一點

然後,您的託管解決方案可以在課堂上加載並檢查所需版本的許可證,無需任何帖子,或者如果您想分開託管應用程序和許可證服務器,您可以實現對本地副本相同的檢查,所以你不要有2個不同的代碼庫

注: 你不必送雖然companyId你可以只用你的數據庫的SHA1功能搜索數據庫和做一個直接查找檢查以獲得到期和東西

安全數據: 如果您實施安全應用程序,因爲它保存的數據由於某種原因而無法公開,以減少黑客行爲,因此許可證系統位於不同的端口上,並且在服務器設置中允許它僅建立連接從外部調用端口第一個Linux路由盒子將是理想的本作的iptables可以做到這一點很簡單,我不知道它是建立在Windows

更新多麼容易: 保護從歸零許可證

您可以實施的另一個功能可以防止人們「取消」您的許可證nd不需要任何本地更改在許可證服務器上驗證那裏的主機名,所以當第一次使用許可證密鑰時,如果另一個請求從不同的主機名進入,它會根據許可證密鑰將主機名保存到數據庫中。他們必須聯繫您重新啓用那裏許可證那裏主機名已經改變大多數公司應該運行一個靜態IP地址,所以他們將永遠有一個靜態主機名即使它有ISP主機名

這仍然沒有停止有經驗的人,他們可以繞過他們所需要的所有迴環攻擊以防止您的應用程序與您的服務器通話,然後他們將不得不在虛擬服務器上設置虛擬服務器以迴應虛假信息。

Th e額外英里

您可以通過使許可證系統成爲一個C#庫和應用程序下載新版本卸載現有程序集並加載到新的DLL程序集中,您只需確保不要更改您的公共方法的名稱,然後您可以添加更多的安全性,而不會中斷服務器或完整的客戶端更新,您也可以使用某種形式的AES或基於證書的加密通信,並使用嵌入式資源將證書編譯到DLL中。

通過以上你甚至可以去一個更好的,做一個新證書爲每個許可證密鑰,這應該使「歸零」難於上青天*

正如另一個不是*,這將需要服務器編譯DLL我強烈建議你不要在託管服務器上這樣做,因爲它將使用大量的內存和CPU能力來最小化這種使用MSBuild並保留所有編譯數據,因此唯一改變的就是證書應該意味着它保留.pdb文件,並且應該更快地編譯

+0

已更新,以顯示如何從許可證服務器而不是託管服務器運行 – HotHeadMartin 2012-07-16 15:25:35

+0

如何解釋我「停業」並不能託管Web服務的情況。我無法前往每個客戶端安裝並在本地進行更新。我想也許可能會發布某種修補程序,一旦我們的許可證驗證被關閉,軟件就會自動免費。 – Marc 2012-07-16 18:47:27

+0

如果您停止使用服務器,服務器將脫機,因此緩存將一直運行,直到許可證失效,然後當您停止使用時,他們無法申請新服務器,並且該軟件將停止工作,因爲它是基於許可證的,或者如果您想要使軟件許可證免費時,面臨着一個取消抵押品贖回權設置您的許可證服務器發送00/00/0000 00:00:00到期,然後在您的代碼檢查是否到期超過不運行檢查 – HotHeadMartin 2012-07-17 08:56:39