2015-09-19 136 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)进行调用。 –

相关问题