VB.Net и phpMyAdmin: как подключиться к SQL-серверу phpMyAdmin без имени пользователя или пароля? - PullRequest
0 голосов
/ 25 мая 2018

Я настраиваю форму входа в Visual Basic .Net.Я хотел бы, чтобы эта база данных размещалась через Интернет, чтобы люди могли подключаться, где бы они ни находились.

Проблема в том, безопасность. Если у меня есть имя пользователя ипароль в моем коде, меня легко взломать, и моя программа будет взломана.

Есть ли способ получить токен, который я могу использовать вместо пароля, к которому можно получить доступ только через программусам по себе?

Это мой код:

Dim connection As New MySqlConnection("datasource=localhost;port-3306;username;whatever;password=whatever;database=whatever")

И это что-то вроде того, что я ищу:

Dim connection As New MySqlConnection("token=aFjiwqMF93JmHSazhH")

Если так, как бы я поступилэто, и где я мог бы получить токен базы данных и ссылку?

1 Ответ

0 голосов
/ 25 мая 2018

Любой, кто сможет взломать вашу программу, скорее всего, будет обладать знаниями и для взлома MySQL ... Я знаю, это не ответ, я потратил много недель, пытаясь защитить свои программы от подобных, однако потом подумал:Почему ...? '

При этом, если вам действительно нужно хранить исходный код в тайне и удалять пароли, как насчет загрузки строки подключения из текстового файла где-нибудь?

Простойшифрование см. system.security.cryptography

Я только что посмотрел свой старый код для простого шифрования строк, вы можете посмотреть на этот

Imports System.Security.Cryptography
Imports System.Net

Public NotInheritable Class Encryptorr
Public TDS As New TripleDESCryptoServiceProvider

Private Function EncHash(ByVal key As String, ByVal length As Integer) As Byte()
    Dim enc_Sha1 As New SHA1CryptoServiceProvider
    Dim keyBytes() As Byte =
        System.Text.Encoding.Unicode.GetBytes(key)
    Dim hash() As Byte = enc_Sha1.ComputeHash(keyBytes)
    ReDim Preserve hash(length - 1)
    Return hash
End Function

Sub New(ByVal key As String)
    TDS.Key = EncHash(key, TDS.KeySize \ 8)
    TDS.IV = EncHash("", TDS.BlockSize \ 8)
End Sub

Public Function EncryptData(ByVal plaintext As String) As String
    Dim Strbytes() As Byte = System.Text.Encoding.Unicode.GetBytes(plaintext)
    Dim memStr As New System.IO.MemoryStream
    Dim encStream As New CryptoStream(memStr, TDS.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
    encStream.Write(Strbytes, 0, Strbytes.Length)
    encStream.FlushFinalBlock()
    Return Convert.ToBase64String(memStr.ToArray)
End Function

Public Function DecryptData(ByVal encryptedtext As String) As String
    Try
        Dim enc_Bytes() As Byte = Convert.FromBase64String(encryptedtext)
        Dim mem_Str As New System.IO.MemoryStream
        Dim decStream As New CryptoStream(mem_Str, TDS.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
        decStream.Write(enc_Bytes, 0, enc_Bytes.Length)
        decStream.FlushFinalBlock()
        Return System.Text.Encoding.Unicode.GetString(mem_Str.ToArray)
    Catch ex As Exception
        Return "Decryption Failed"
    End Try
End Function

End Class

Вызов с

Public Sub TestMe()
    Dim encr As Encryptorr = New Encryptorr("AlovelyLong463728KeytoEncryptwith")
    Dim encrytedstr As String = encr.EncryptData(textbox1.text)
    Textbox2.text = encrytedstr

    Dim decry As Encryptorr = New Encryptorr("AlovelyLong463728KeytoEncryptwith")
    Dim decryptedtext As String = decry.DecryptData(Textbox2.text)
    Textbox3.text = decryptedtext
End Sub

Затем вы можете зашифровать и расшифровать строки, прочитанные из текстовых файлов, хотя вернемся к моей первоначальной точке зрения.Если кто-то может получить доступ к коду программы, он также может выполнить дешифрование ...: (

Все еще пища для размышлений! Удачи

Обновление - просто чтобы добавить вас, вывсегда можно создать зашифрованную строку, использовать ее в качестве глобальной переменной и функцию расшифровки для передачи непосредственно в качестве строки подключения. Это означает, что вместо сохранения имени пользователя и пароля в текстовом файле вы просто используете Public Shared Constr as String = fhdasjifhn32437289cj (или любой другой зашифрованныйстрока is), и соединение будет Dim Con as MySQLConnection = new MySQLConnection(DecryptMyStr(Constr)) с DecryptMyStr, являющимся функцией дешифрования

...