2011-10-19 42 views
1

我有一個web應用程序,爲了向我的客戶演示,他們要求我將它安裝在本地服務器上,以便他們可以測試它,這裏是我的問題!安全我的ASP.NET代碼演示?

有什麼辦法,所以我可以唯一發布了該服務器,我沒有把一些限制,但在我的應用程序的許多功能都是開放的,所以他們可以從服務器磁盤映像,並用它在任何其他地方

有什麼方法可以使用,所以我的Web應用程序檢查這個服務器是否是相同的服務器(通過硬件ID或任何我沒有任何想法),然後開始工作!

我看到了許多代碼,但他們取勝的形式生成唯一HID,但我怎麼能連接與ASP .NET做了

編輯

可以ü看看這個也

我是using system.management class

這是可靠的我的意思是他們獨特?

private string GetUniqueID() 
    { 
     string cpuInfo = string.Empty; 
     ManagementClass mc = new ManagementClass("win32_processor"); 
     ManagementObjectCollection moc = mc.GetInstances(); 

     foreach (ManagementObject mo in moc) 
     { 
      if (cpuInfo == "") 
      { 
       //Get only the first CPU's ID 
       cpuInfo = mo.Properties["processorID"].Value.ToString(); 
       break; 
      } 
     } 
     ManagementObject dsk = new ManagementObject(@"win32_logicaldisk.deviceid=""" + "C" + @":"""); 
     dsk.Get(); 
     string volumeSerial = dsk["VolumeSerialNumber"].ToString(); 

     string HardWareUniqueID = volumeSerial + cpuInfo; 

     return HardWareUniqueID; 
    } 

感謝您的回答, 在此先感謝

+5

如果你不信任你的客戶,你應該考慮放棄它們。 – SLaks

+0

對你而言,一個問題就是,你是否不相信你的客戶,你認爲他們會偷走它和/或不付錢?這就是我要解決的問題,而不是代碼。 –

+0

你甚至簽了合同嗎?這就是合同的目的,如果沒有合同,永遠都不會工作。 –

回答

1

您HAE幾個選擇...

  1. 鎖定你的網站上安裝它的單個IP地址。爲了讓您的生活更輕鬆,請在普通頁面基礎類中檢查該IP。 (請注意,您也可以編寫HTTP處理程序,但基類方法更容易。)

  2. 將「電話主頁」呼叫置於應用程序中,每次啓動時都會與您的服務器進行檢查。這樣你可以檢查他們是否已經移動了它或者多個實例正在運行。

  3. 使用內置.NET的授權功能(同第三方開發者使用控制等)

  4. 最簡單的...只是把一個定時炸彈,讓他們測試幾個星期,然後自動阻止訪問。儘管......保持最後檢查的時間,以便您可以判斷他們是否回滾了時鐘以獲得更多用量,但要聰明。

只要確保分發Web應用程序,而不是一個Web項目,因此您可以編譯bumary而不是出貨的代碼隱藏文件分發您的代碼。這將繼續盯着看,但確實使部署更加痛苦,因爲你總是不得不重新編譯每一個變化(而不是按需編譯)。

3

如果你想避免讓它「電話之家」替代是生成某種證書並將其放置在機器上。只使用您知道的私鑰來加密機器名稱和/或IP。然後讓您的應用程序使用您的公共密鑰對其進行解密,以驗證它是否允許在此服務器上運行。沒有人不知道你的私鑰將能夠創建有效的證書。

+0

只要我的應用程序是使用內部本地網絡,即使沒有任何互聯網連接,我不能依靠IP或電話回家,但私人密鑰是好的,我會看看它,你也可以檢查我的代碼在第一發布! – Synxmax

0

我會放入一顆定時炸彈。這是微不足道的實施。另外,你的客戶不會認爲你不信任他們。應用程序中的固定評估期非常普遍。

0

爲他們提供一個沒有任何用戶訪問權限的VMware映像,只允許他們在他們的Web瀏覽器中通過HTTP從外部打開該網站。