Name des Programms:
HTTPSecurityLibrary
Beschreibung:
Diese Library ist für die sichere Kommunikation zwischen einem VB Programm und einem PHP Script. Dieses wird z.B. benötigt um irgendwelche SQL Datensätze abzufragen, aber man möchte nicht die SQL Verbindungsdaten in das Programm eingeben, da man diese durchs Dekompilieren einsehen könnte oder auch wenn man die Verbindung abghört.
Wird ein Request gestartet, so generiert meine Library über das DiffieHellmanverfahren einen geheimen Schlüssel. Es werden die benötigten Werte übermittelt, die das Script benötigt um den identischen Schlüssel zu bilden. Jedoch kann ein "Mithörer" mit den Werten nichts anfangen, aber genaueres steht im Wiki Artikel.
Es wird im Script eine Session gestartet, in die der gemeinsame Schlüssel geschrieben wird und auch die aktuelle IP des abfragers.
Erst hiernach wird die eigentliche Abfrage gestellt, das Script überprüft die IP und HTTP_USER_AGENT. Sind diese in Ordnung lässt das Script die Abfrage druch und es kommen die Userausgaben.
Um ein Abfragescript auf dem Server zu schützen muss lediglich eine PHP Includet werden, möglichst ganz zu beginn des Scripts. Danach wird der weitere Inhalt des Scripts nur freigegeben, wenn alle Parameter der Anfrage erfüllt sind.
Edit: Die Daten die Zurückgegeben werden, sind natürlich Verschlüsselt, also kann ein Mithörer nichts damit anfangen, selbst mit dem Key nicht.
Screenshot:
- keiner -
Beispiel:
Zuerst die DLL in die Verweise unter "MyProject" hinzufügen. Danach den Import ganz zu beginn des Codes nicht vergessen
Benötigt wird:
- Button1
- TextBox1 (MultiLine, ScrollBar)
Das PHP Script:
query.php
Damit die Daten verschlüsselt werden müssen die Funktionen $request-Append(Text As String); oder $request->AppendLine(Text As String); verwendet werden. Sind alle Daten eingefügt, so wird die Ausgabe, natürlich ganz am Ende des Scripts mit $request->display(); gestartet.
Man kann seinem Script natürlich noch alle möglichen anderen Variablen via POST übergeben und im Script drauf zugreifen, die einzigen variablen, die NICHT deklariert werden dürfen sind 'request_action' und 'request_sid' da dieses Systemvariablen zur Herstellung der Verbindung sind.
Zudem sollte selbstverständlich NICHT im Script dnp_request.php rumgefummelt werden, da dieses genau auf die Abfrage abgestimmt ist.
Verwendete Programmiersprache:
Visual Basic 2008
Systemanforderungen:
.NET Framework 3.5
Download:
HttpSecurityLibrary (10 KB / 24KB)
Lizenz/Weitergabe:
Freeware
Updates:
- (29.07.09): Es wird jetzt das DiffieHellman-Schlüsselaustausch-Verfahren genutzt um einen gemeinsamen Schlüssel zu erzeugen, mit dem man den Response wieder entschlüsseln kann!
HTTPSecurityLibrary
Beschreibung:
Diese Library ist für die sichere Kommunikation zwischen einem VB Programm und einem PHP Script. Dieses wird z.B. benötigt um irgendwelche SQL Datensätze abzufragen, aber man möchte nicht die SQL Verbindungsdaten in das Programm eingeben, da man diese durchs Dekompilieren einsehen könnte oder auch wenn man die Verbindung abghört.
Wird ein Request gestartet, so generiert meine Library über das DiffieHellmanverfahren einen geheimen Schlüssel. Es werden die benötigten Werte übermittelt, die das Script benötigt um den identischen Schlüssel zu bilden. Jedoch kann ein "Mithörer" mit den Werten nichts anfangen, aber genaueres steht im Wiki Artikel.
Es wird im Script eine Session gestartet, in die der gemeinsame Schlüssel geschrieben wird und auch die aktuelle IP des abfragers.
Erst hiernach wird die eigentliche Abfrage gestellt, das Script überprüft die IP und HTTP_USER_AGENT. Sind diese in Ordnung lässt das Script die Abfrage druch und es kommen die Userausgaben.
Um ein Abfragescript auf dem Server zu schützen muss lediglich eine PHP Includet werden, möglichst ganz zu beginn des Scripts. Danach wird der weitere Inhalt des Scripts nur freigegeben, wenn alle Parameter der Anfrage erfüllt sind.
Edit: Die Daten die Zurückgegeben werden, sind natürlich Verschlüsselt, also kann ein Mithörer nichts damit anfangen, selbst mit dem Key nicht.
Screenshot:
- keiner -
Beispiel:
Zuerst die DLL in die Verweise unter "MyProject" hinzufügen. Danach den Import ganz zu beginn des Codes nicht vergessen
Benötigt wird:
- Button1
- TextBox1 (MultiLine, ScrollBar)
VB.NET-Quellcode
- Imports HTTPSecurityLibrary
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim request As New HTTPSecurityRequest
- Dim col As New PostCollection
- col.Add("query", "SELECT * FROM `sys_user` ORDER BY `id` ASC")
- col.Add("version", "1.0")
- TextBox1.Text = request.Create("http://localhost/vb/query.php", col).Replace(vbLf, vbNewLine)
- End Sub
- End Class
Das PHP Script:
query.php
PHP-Quellcode
- <?php
- include("dnp_request.php");
- mysql_connect("localhost", "root", "");
- mysql_select_db("test");
- $query = mysql_query($_POST['query']);
- while($row = mysql_fetch_object($query)) {
- $request->AppendLine($row->username." - ".$row->userimage);
- }
- $request->Append("Version: ".$_POST['version']);
- $request->display();
- ?>
Damit die Daten verschlüsselt werden müssen die Funktionen $request-Append(Text As String); oder $request->AppendLine(Text As String); verwendet werden. Sind alle Daten eingefügt, so wird die Ausgabe, natürlich ganz am Ende des Scripts mit $request->display(); gestartet.
Man kann seinem Script natürlich noch alle möglichen anderen Variablen via POST übergeben und im Script drauf zugreifen, die einzigen variablen, die NICHT deklariert werden dürfen sind 'request_action' und 'request_sid' da dieses Systemvariablen zur Herstellung der Verbindung sind.
Zudem sollte selbstverständlich NICHT im Script dnp_request.php rumgefummelt werden, da dieses genau auf die Abfrage abgestimmt ist.
Verwendete Programmiersprache:
Visual Basic 2008
Systemanforderungen:
.NET Framework 3.5
Download:
HttpSecurityLibrary (10 KB / 24KB)
Lizenz/Weitergabe:
Freeware
Updates:
- (29.07.09): Es wird jetzt das DiffieHellman-Schlüsselaustausch-Verfahren genutzt um einen gemeinsamen Schlüssel zu erzeugen, mit dem man den Response wieder entschlüsseln kann!
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Dodo“ ()