Passwort überprüfen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Passwort überprüfen

    Hallo
    Im Intenet habe ich ein Passwort abgespeichert welches ich gerne überprüfen möchte. Im Textfeld des Programmes wird das PW eingegeben. Ich habe gelsen dass es nicht richtg ist Passwörter mit If Passwort = "1234" Then abzufagen. Wie kann man das sicher machen?
    Moin,

    das geht nicht. .NET ist dekompilierbar etc. und somit kann man jederzeit die Anwendung manipulieren, wie man möchte.
    Außerdem, wo hast Du das Passwort denn gespeichert und vor allem wie (im Klartext, gehasht)?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Das Passwort ist lesbar in einer Textdatei im Internet. Ich bin noch am überlegen wie ich dsa sichere.
    Das ist schade dass das nicht geht. Aber könnte man das vom Benutzer eingegebene Passwort denn nicht unverschlüsselt hochladen und dann im Internet überprüfen? Zurück gäbe dann entweder ein True oder False.
    Klar, theoretisch geht das, allerdings müsste man das so machen: Das Passwort gehasht speichern (am Besten in einer Datenbank, Textdateien sind total unsicher), damit es sicher und nicht direkt auslesbar ist und dann via SSL-verschlüsselter Verbindung das Passwort, das der Client eingegeben hat an den Server senden und dann müsste der eben via PHP (z. B.) den Hash des Passworts bilden und dann vergleichen.

    Das große Problem an der Sache ist, a) brauchst Du ein SSL-Zertifikat, um die Verbindung zum Server zu verschlüsseln, sonst kann man das Ganze mit WireShark manipulieren und b) kann man die Anwendung eben so manipulieren, dass die diesen Teil der Passwortverifizierung gar nicht erst ausführt. => Ist das umsonst.

    Das ist eben das Problem, Lizenzsysteme mit .NET sind nicht sicher.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    So sieht es aus. Wenn Du sowas nativ schreibst (C/C++), dann ist das schon mal nicht ganz so einfach, aber das heißt nicht, dass es ganz unmöglich ist.
    Selbst bei Firmen werden ja Lizenzsysteme oft umgangen, weil doch irgendjemand eine Schwachstelle findet. Ob die das auch so genau machen, weiß ich nicht, aber auf ähnliche Weise bestimmt (müssen sie ja irgendwie).

    Dennoch kann man somit die Anwendung nicht so dekompilieren, dass man den Quelltext wieder vor Augen hat, das geht da nicht. Aber bestimmte Sachen kann man immer noch auslesen. Zudem ist C(++) eine Sprache, die man intensiv lernen muss.

    Das kannst Du zwar machen, aber das Restrisiko besteht weiterhin, dass Du woanders dann eine Schwachstelle einbaust, die man umgehen kann.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jo, ist wie gesagt halt mit .NET so eine Sache, denn jeder kann eine Anwendung halt so umgestalten wie er möchte.
    @Niko Ortner hatte dazu mal sogar einen Post verfasst, wo er zeigte, wie es geht. Eventuell verlinkt er ihn ja, ich weiß nämlich nicht mehr, wo er war.

    Aber freut mich, dass Du direkt so einsichtig warst und Dich erkundigt hast. ;)

    Viele Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: