2015-09-19 131 views
-2

我有一個asp.net web應用程序,並在專用網絡上運行 我想確定的PC客戶確定ASP.net網站客戶端的最佳方法是什麼?

  1. 允許或阻止該請求
  2. 知道是誰在連接
  3. 通過特殊的電腦
  4. 僅連接
  5. 以及更多

我使用了IP地址,但任何人都可以在更改IP地址時通過在webapp中傳遞的IP地址進行連接,我希望用戶通過ju登錄一些電腦。有什麼建議麼 ?

+0

所有的系統都是同一個Windows域的一部分嗎? – HABO

+0

對不起沒有! – Almelyan

回答

1

登錄和密碼進入偏好數據庫...控制用戶的一切(IP控制可以被繞過,這不是一個有效的控制)的最佳方式。

UPDATE

傳遞信息的URL的新方法:

要獲得硬件信息:

Dim query As New SelectQuery("Win32_bios") 
Dim search As New ManagementObjectSearcher(query) 
Dim info As ManagementObject 
For Each info In search.Get() 
    BIOS_Msg = info("version").ToString() 
Next 

Dim searchMainboard As New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem") 
Dim infoMain As ManagementObject 
For Each infoMain In searchMainboard.Get() 
    Computer_Mainboard = infoMain("model").ToString() 
Next 

爲編碼字符串: 你可以設置一個關鍵點和IV作爲字節數組。按鍵可能根據日期更改,甚至根據當前時間更改一些特定參數。

添加也:

Imports System.Security.Cryptography 
Imports System.Text 


Friend Function EncryptStringToBytes_Aes(ByVal plainText As String, ByVal Key() As Byte, ByVal IV() As Byte) As String 
    ' Check arguments. 

    Dim encrypted() As Byte 

    ' Create an AesCryptoServiceProvider object 
    ' with the specified key and IV. 

    Using aesAlg As New AesCryptoServiceProvider() 
     aesAlg.Key = Key 
     aesAlg.IV = IV 

     Dim encryptor As ICryptoTransform = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV) 

     ' Create the streams used for encryption. 
     Using msEncrypt As New MemoryStream() 
      Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write) 
       Using swEncrypt As New StreamWriter(csEncrypt) 
        'Write all data to the stream. 
        swEncrypt.Write(plainText) 
       End Using 
       encrypted = msEncrypt.ToArray() 

      End Using 
     End Using 
    End Using 

    ' Return the encrypted bytes from the memory stream. 
    Return Convert.ToBase64(encrypted) 

End Function 'EncryptStringToBytes_Aes 

對其進行解密:

Friend Function DecryptStringFromBytes_Aes(ByVal cipherText As String, ByVal Key() As Byte, ByVal IV() As Byte) As String 

    Dim plaintext As String = Nothing 
    Dim SourceText as Byte() = Convert.FromBase64(CipherText) 

    ' Create an AesCryptoServiceProvider object 
    ' with the specified key and IV. 
    Using aesAlg As New AesCryptoServiceProvider() 
     aesAlg.Key = Key 
     aesAlg.IV = IV 

     ' Create a decrytor to perform the stream transform. 
     Dim decryptor As ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV) 

     ' Create the streams used for decryption. 
     Using msDecrypt As New MemoryStream(SourceText) 

      Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read) 
       Using srDecrypt As New StreamReader(csDecrypt) 

        ' Read the decrypted bytes from the decrypting stream 
        ' and place them in a string. 
        plaintext = srDecrypt.ReadToEnd() 

       End Using 
      End Using 
     End Using 
    End Using 


    Return plaintext 

End Function 'DecryptStringFromBytes_Aes 

使用這些功能,您可以: - 獲取特定的硬件信息; - 編碼任何字符串並將其轉換爲Base64 - 使用常規慣例將它們傳遞到URL中。 - 在您的代碼隱藏中接收它們並翻譯它們。

我想這是獲取每個工作站的可靠和特定信息的最佳方法,而不是IP號碼。您也可以使用Windows序列號。

+0

感謝您的回覆,是的,我用我的網絡應用程序的用戶帳戶,這不是我的問題,我想用戶登錄一些電腦,而不是另一個在網絡上,我怎麼說它... – Almelyan

+0

如果你有完全控制每個工作站(我的意思是說,你可以通過phisicaly訪問它們),你可以創建一個應用程序來調用瀏覽器以HASH模式(可能是SHA256)在URL上傳遞BIOS消息和其他數據等特定參數。它比IP或「乾淨的文本」更安全。例如:獲取BIOS消息和磁盤卷,調用SHA256並調用瀏覽器傳遞URL,如:「192.168.200.100?v=868661761763837687361871268612831286386186386816」其中V是要在您的後面代碼中檢查的變量。 –

+0

比這更好(因爲用戶可以複製URL),您可以將參數傳遞給隱藏字段,並將它們確實作爲參數(Set/Get)進行調用。 –

相關問題