C# - MySQL Fehler + Sicherheitsvorschlag?

2 Antworten

Dann enthält deine Variable key wohl irgendwo in diesem Fall ein ' - oder irgendwas anderes. Um MySQL injections zu vermeiden kannst du dir natürlich eine eigene Methode schreiben, grundsätzlich gilt, dass du jedes gefährliche Zeichen mit einem Backslash "entschärfen" kannst. Ich bin mir nicht sicher, wie ein doppeltes Backslash wirkt (um deine Methode auszutricksen), das müsstest du mal schnell testen. Wäre natürlich blöd wenn dein extra gesetztes Backslash entschärft wird, da müsstest du u.U. entsprechend handeln, ist aber auch kein Problem. Alternativ gibt es da vermutlich bereits eine fertige Lösung in der Bibliothek die du verwendest, da lohnt sich ein Blick in die Dokumentation. Da du die verwendete lib nicht genannt hast kann ich dir da spontan auch keine bessere Antwort geben.

Ich kann im übrigen noch empfehlen den zu verwendenden Zeichensatz anzugeben.

0

Ich

hab bei key auch 'nur' den ersten Block ohne den - verwendet um zu schauen ob es klappt und selbst wenn der key '123456' ist klappt es nicht aufgrund des gleichen Fehlers.

Was die Sicherheit angeht:

Ich habe mir ausgedacht es so zu machen das in der App nicht die MySQL Commands ausgeführt werden sondern diese vlt in der Datenbank selbst auszuführen mithilfe der Events und das man den Nutzer für das Programm mit der er sich auf den Server verbindet nur die Rechte hat dieses Event zu starten/auszuführen, nicht mehr.

Somit könnte eigendlich nur der Server die Befehle ausführen und der Client sagt nur was zu tun ist.

Und damit man nicht im Client das einfach umändert das er sagt: "Mach mal die Lösch-Funktion statt die Login Funktion' hab ich vor das es eine Art Anti-Cheat geben soll, nur nicht für das Spiel sondern für die App.

Das soll den Server davor schützen ausgetrickst zu werden. Zum Beispiel das sich der Client und der Server immer authentifizieren oder ähnliches.

Was das angeht mit den ' Zeichen etc...

Da hab ich die Idee gehabt das es nachschaut ob eines der verbotenen Zeichen enthalten ist, oder das man es nur darauf einstellt das es nur Buchstaben und Zahlen verwenden darf.

0
@MarcelDerAdmin

Bzgl. des Problems mit dem Query würde ich empfehlen einen SQL Profiler dazwischenzuhängen, ich kann "Neor Profile SQL" empfehlen, sofern erwünscht helfe ich gerne via Anydesk - ich hoffe mal das verstößt jetzt nicht gegen die GF Richtlinien.

Bzgl. der Idee den Client keine SQL Befehle ausführen zu lassen: der Client sollte niemals die unbeaufsichtige Kontrolle über SQL querys und auch zu befolgende Aktionen haben. Deine Serverapplikation sollte auf jedenfall alles was der Client "meint" gegenprüfen und nur der Applikationserver sollte sofern berechtigt den SQL Query versenden.

1

lass dir mal die werte ausgeben.. da ist mit sicherhet irgend ein unerlaubtes zeichen drin.. ' oder so ..

es ist übrigens nicht gut werte ungefiltert /un-escaped reinzuknallen.. genau das ist auch der grund für deinen fehler.

Also die Werte wären Folgende:

7w3lb....-84v...-nbcF...-urXQ....
Microsoft Windows NT 6.2.0000.0
USERDOMAIN (zB RECHNER1)
USERNAME (Marcel)

Fehlermeldung:

You have an error in your SQL syntax; check tghe manual that corresponds to your MySQL Server version for the right syntax to use near 'key) VALUES ('Microsoft Windows NT 62.00000.0', 'RECHNER1', 'Marcel', 'tw3lb' at line 1

Also der erste Wert mit dem 7w3... klappt wenn ich mir die Werte ausgeben lassen will perfekt, aber hier wird er scheinbar bei der Ausführung des Codes nicht mehr 'so richtig' was das mysgl dann angeht da es nur bis zum ersten - angenommen wird :/

0

Was möchtest Du wissen?