WebSeiten Listen Verschlüsselt übertragen auf VB und Entschlüsseln.

  • Allgemein

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    WebSeiten Listen Verschlüsselt übertragen auf VB und Entschlüsseln.

    Hallo zusammen,

    Bin neu hier im Forum und hoffe das ich jetzt gerade die Richtigen Abteilung gelandet bin.

    Mein Anliegen ist eigentlich nichts neues "Laut Google und Co", ich möchte Listen aus meiner Webseite Verschlüsselt übertragen auf VB und da aber Entschlüsselt wiedergeben möchte.

    Ich Arbeite noch nicht all zu lang mit VB ca 2 Wochen gerade mal und habe schon mein erstes Project in Angriff genommen. Ich lerne sehr schnell von daher sehe ich darüber keine Probleme mich gleich in was zu stürzen was ich noch nicht genau kenne. Bisher klappt alles wies sein soll, die Übertragung von meinen Listen Funktioniert.

    Meine frage ist eigentlich wie genau ich es umsetzen könnte um Beispielsweise einen Text von meiner Webseite Verschlüsselt übertragen kann an mein Project. Das Verschlüsselt abzusenden per php zum bsp. wäre kein Problem, nur weis ich nicht ganz genau wie ich es anwenden kann in VB das zu entschlüsseln.

    Meine Vorgehensweise ist derzeit in VB, die Daten erhalte ich per WebBrowser und Wiedergebe diese per Listbox.

    Ich wollte eigentlich die Daten direkt beziehen durch MySql.Data.dll, leider lest mein Provider den Zugriff auf MySql von Extern nicht zu. Daher musste ich per php die Daten aus der DB holen und die übersenden an VB. Mich Stört es aber das man per Domain Pfad sonst die Daten auch sieht über Inet. Mir ist zumindest keine anderer Lösungsweg auf die schnelle eingefallen. Gerne nehme ich auch Ideen entgegen.

    Da es ja reichlich an Verschlüsselungsmöglichkeiten gibt, wäre ich für jede Hilfreiche Antwort und besser Umsetzung dankbar.

    Ich habe derzeit noch keine Verschlüsslung dafür gebastelt, da ich wie gesagt nicht weis wie es sich in VB entschlüsseln lassen könnte.

    Sry wegen langen Text aber Denke mal ist doch ok so.. :rolleyes:
    Das habe ich noch nicht begriffen. Wer tut genau was?
    Soll der Client (das VB.net-Programm) Websiten indexieren und an den Webserver schicken?
    Soll der Client beim Server eine Website anfordern können die ihm dann geschickt wird?
    Und wofür braucht man dann genau "verschlüsselte" Websiten?
    Sry wegen Unklarheit..

    Ich wollte für mein Project eigentlich die Daten aus der MySql beziehen die Extern liegt, klappt leider nicht da kein Extern Zugriff gestattet ist sondern nur local.

    Nun musste ich per. php die Daten aus der Sql auslesen, man kann per Domain Pfad die Daten nun im Inet sehen. Da ich es aber nicht möchte das man die über Inet sehen kann will ich die Verstecken übers Inet, so das man nur mit den Tool was ich gerade mache anschauen kann.

    Daher hatte ich überlegt die Daten zu Verschlüsseln und mit VB entschlüsselt anzuzeigen als Listen. Sprich man sollte übers Inet wenn man den Domain Pfad kennt nichts anfangen können.

    Ich bin mir nur nicht ganz einig wie ich es am besten umsetzen könnte.. mir ist eigentlich nur Wichtig das ich die Daten aus der externen Datenbank in den Tool nutzen kann. Wäre der Zugriff gestattet auf die Datenbank von außen wäre das kein Problem gewesen. So muss ich halt den Umweg über php machen um die in mein Tool zuerhalten.
    Dann schicke die Daten verschlüsselt in AES an das Script und wenn jemand das Script, z.B. get.php öffnet,
    sieht er nur die verschlüsselten Daten, aber man braucht das Passwort, um es wieder zu entschlüsseln.

    Aber wenn du es im Programm entschlüsselst, dann schreibe das Passwort nicht ins Programm, sondern gib
    den Personen, die das Programm nutzen sollen das Passwort und lass es Ihnen in ein Textfeld eingeben und
    entschlüsseln lassen.

    MFG

    Alex-Digital :D
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    @Alex-Digital
    Moment mal,
    nach meiner jetzigen Information ist es einem (normalen) Ausenstehendem nicht möglich ein php-Skript auf einem Server einzusehen, oder ?

    @Norman
    Dann würde ich einfach in VB eine Anfrage per POST schicken, die ein MD5 Passwort enthält. Über MD5 hatten wir letztens noch eine Diskussion, da es mittlerweile recht unsicher ist, aber in deinem Fall sollte es doch noch reichen.
    Aus jeden Fall überprüfst du dann in deinem Skript das Passwort, (würde es mal sicherheitshalber nicht in das Skript direkt schreiben), ist es ok, liest du die Daten aus der Datenbank aus, ist es nicht ok, machst du gar nichts.
    So, geht jetzt ein normaler Browser auf diese Seite, übermittelt er standartgemäß (fast) gar nichts. Das Passwort ist also nicht ok (weil auch keins mitgeschickt wurde :) ) und der User sieht die Daten nicht.
    Hierzu ein kleines Schaubild.

    Edit. Da könnte man dann natürlich mit einem Sniffer das Passwort herausfiltern, aber ich behaupte mal das können die wenigsten. Da könnte man dann ja noch mit einer kleinen Verschlüsselung arbeiten.
    Bilder
    • schaubild.png

      14,58 kB, 891×553, 117 mal angesehen
    • schaubild2.png

      11,78 kB, 891×553, 104 mal angesehen
    @Norman
    Guck mal in diesem Beitrag ( Skript zum Eintragen von Parametern in Mysql Tabelle) (ganz lesen) Dort steht unten eine gute Lösung. Allerdings in C#. Die kannst du hier (developerfusion.com/tools/convert/csharp-to-vb/) konvertieren.
    Damit kannst du dein Passwort senden.
    So könnte das Skript grob aussehen.

    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. $url = mysql_real_escape_string($_REQUEST['parametername']);
    3. if ($url == "ausderdatenbankholen")
    4. {
    5. echo "<table>"
    6. // blabla
    7. while ($row fetch blabla)
    8. {
    9. //Vlt. Tabelle erstellen
    10. echo <td>$row</td>
    11. }
    12. //blabla
    13. }
    14. else
    15. {
    16. echo "Sie haben keine Zugang auf diese Seite";
    17. }


    Wegen der Sicherheit solltest du dich dann nochmal informieren. Falls das alles total unsicher sein sollte krieg ich hier auch ein paar hinter die Löffel und du wirst es merken :)

    Die Daten würde ich in einer Tabelle schicken und dann in eine DataTable umwandeln.
    Hab dazu mal 'ne Funktion gemacht.

    HTMLtoDataTable

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Module DataParser
    3. ''' <summary>Konvertiert eine HTML-Tabelle in eine DataTable</summary>
    4. ''' <param name="input">Der HTML-Input</param>
    5. ''' <returns>DataTable</returns>
    6. ''' <remarks></remarks>
    7. Public Function ToDataTable(ByVal input As String) As DataTable
    8. If input.Length() > 0 Then : Else : Throw New Exception("Input is nothing.") : End If
    9. Dim temp As String = input
    10. temp = temp.Replace(Environment.NewLine, "")
    11. Dim output As New DataTable()
    12. Dim columns As New Regex("<tr>(.*?)<.tr>")
    13. Dim items As New Regex("<td>(?<item>(.*?))<.td>")
    14. Dim columMatches As MatchCollection = columns.Matches(temp)
    15. If columMatches.Count > 0 Then : Else : Throw New Exception("Data is incorrect.") : End If
    16. For Each m As Match In columMatches
    17. If m.ToString().Contains("<th>") Then
    18. Dim rows As New Regex("<th>(?<spalte>(.*?))<.th>")
    19. Dim row As MatchCollection = rows.Matches(m.ToString())
    20. If row.Count > 0 Then : Else : Throw New Exception("Can't find any columns.") : End If
    21. For Each s As Match In row
    22. output.Columns.Add(s.Groups("spalte").Value)
    23. Next
    24. Else
    25. Dim itemsRow As MatchCollection = items.Matches(m.ToString())
    26. If itemsRow.Count > 0 Then : Else : Throw New Exception("No DataRows could found") : End If
    27. Dim rowList As New List(Of String)
    28. For Each item As Match In itemsRow
    29. rowList.Add(item.Groups("item").Value)
    30. Next
    31. output.Rows.Add(rowList.ToArray())
    32. End If
    33. Next
    34. Return output
    35. End Function
    36. 'Aufruf: Dim d As DataTable = DataParser.ToDataTable("<table><tr><th>Spalte</th><th>Spalte2</th></tr><tr><td>Hallo</td><td>Hallo2</td></tr></table>")
    37. ' DataGridView1.DataSource = d
    38. End Module


    Da musst du aber auch mal bei den Tutorials vom Datenbankspezi ErfinderDesRades nachgucken wie man eine DataTable richtig erzeugen sollte.
    Hallo,

    @LaMiy:

    Also, ich habe mal im Anhang den Vorgang von meinem Vorgehen mit Paint
    gezeichnet.

    Ich hoffe, du verstehst es.

    MFG

    Alex-Digital :D
    Bilder
    • Vorgang.png

      20,69 kB, 1.067×390, 121 mal angesehen
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    Hmm. Verschlüsselung bringt hier exakt -- 0.
    Du müsstest ja den Entschlüsselungskey im Programm haben.

    Um Dritten den Zugriff auf deinen Server zu erschweren, kannst du dich entweder irgendwie authentifizieren, oder du machst einen Schlüsselaustausch z.B. nach Diffie-Hellman.

    Hinweis: Es ist IMMER möglich die Daten abzugreifen. Dein Programm muss es ja auch können.
    ein typDataset, oder ganz allgemein eine databinding-getriebene Anwendung kann mit New DataTable oder New Dataset nix anfangen.
    Beim Databinding steht das Datenmodell bereits beim Startup bereit, fixnfertig verdrahtet - nur leer.
    Und da kannman dann keine Tabellen austauschen, sonst ist die Verdrahtung ja beim Deibel.
    Logisch, dass man das Datenmodell befüllt, statt iwas auszutauschen.
    Also das Php müsste glaub Xml-Code generieren, den die typisierten Datatables mit .ReadXml sich einverleiben könnten.

    Alternativ könnten die Daten theoretisch auch in meim CompactFormat generiert sein, da könnte man auch was frickeln, dass eine DataTable sowas saugen kann.

    also nochmal: man braucht was, was eine bestehende typisierte DataTable richtig befüllt, statt eine neue Datatable zu generieren.
    Dabei müssen v.a. die Datentypen der Spalten berücksichtigt werden, also eine FillDataTableFromHtml() - Methode müsste anhand der Datentypen der Spalten der typDataTable einen geeigneten TypConverter wählen, weil Html-Daten liegen ja nur als String vor.