确定ASP.net网站客户的最佳方法是什么?

时间:2015-09-19 01:32:13

标签: asp.net .net vb.net networking

我有一个asp.net webapp,并在私人网络中运行 我想确定PC客户端

  1. 允许或阻止请求
  2. 知道谁是连接
  3. 仅通过特殊PC连接
  4. 以及其他
  5. 我使用的是IP地址,但任何人都可以在通过webapp传递的IP地址更改时连接,我希望用户只能通过某些PC登录。有什么建议 ?

1 个答案:

答案 0 :(得分:1)

LOGIN和PASSWORD进入首选项数据库...控制用户所有内容的最佳方法(可以绕过IP控制,这不是有效的控件)。

<强>更新

在网址中传递信息的新方法:

获取硬件信息:

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

对字符串进行编码: 您可以将KEY和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序列号。