Passworteingabe/-überprüfung Online

Code-Stücke können hier veröffentlicht werden.
Antworten

Was hälst du von dem Code?

Hat sehr geholfen.
1
7%
Hat geholfen.
0
Keine Stimmen
Hilft anderen vielleicht.
1
7%
Schwachsinn!
2
13%
Sehr großer Schwachsinn!
11
73%
 
Insgesamt abgegebene Stimmen: 15
Benutzeravatar
dodo
User
Beiträge: 73
Registriert: Mittwoch 10. November 2010, 13:43

Ich schreib zur Zeit 'n Programm fürn größeres Projekt, und ich dachte, dass dieser Code für viele Programme nützen könnte: Eine Passwort- und Benutzernameeingabe in einem Pythonporgramm und dessen Überprüfung Online(für erhöhte Sicherheit).
Vielleicht hilfts euch ja :D
Es könnte leichtere/schlankere Varianten geben, aber am Ende machts in meinem Programm auch nichts aus, wenns mal 10 Zeilen länger ist! :) Aber ich würde mich trotzdem über Verbesserungsvorschläge und ähnliches freuen.

Danke, Euer dodo.

CODE(SERVER):

Code: Alles auswählen

#Vorbereiten des Log-ins
#Socketvorbereitung
import socket
ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
ss.bind(("",50000))
ss.listen(1)
#Logincodes
try:
 while True:
  komm, addr = ss.accept #akzeptieren der "Loginnachricht"("Syntax":"Benutzername|Passwort")
  while True:
   data = komm.recv(1024) #"Loginnachricht" wird in die Variable data kopiert
   if not data:
    komm.close() #Beenden, falls keine Nachrichten gibt.
    break
   dataf = open("loginUSR", 'r') #Öffnen der Datei, die die Benutzernamen enthält.
   datar = dataf.read()#Lesen der Datei
   datar = datar.split("\n")#Trennen der einzelnen Benutzernamen
   dirda = data.split("|")#Trennen von Benutzername und Passwort in der "Loginnachricht"
   if dirda[0] in datar:#Falls der eingegebene Benutzername in den existierenden Benutzernamen enthalten ist...
    for i in range(0,len(data)-1):...wird getestet wo.
     if datar[i] == dirda[0]:
      x = i #Feststellen des Index(Ich weiß, dass es dafür ne Funktion gibt, fiel mir nur nicht ein)
    b = open("loginPWS", 'r')#Öffnen der Passwortdatei
    c = b.read()#lesen
    c = c.split("\n")#aufteilen
    if c[x] == dirda[1]:#index vom Benutzernamen = Index vom Passwort
     komm.send("YOUCAN")#Aktzeptieren der Benutzerdaten
    else:
     komm.send("YOUCANT")#Falsches Passwort
   else:
    komm.send("YOUCANT")#Falsches Passwort
CODE(Client):

Code: Alles auswählen

#Vorbereiten...
import socket
ip = #Hier folgt die IP-Adresse des Servers
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((ip, 50000))
try: 
    while True: 
        ben = raw_input("Benutzername: ")
        pas =  raw_input("Passwort: ")
        nachricht = ben + "|" + pas
        s.send(nachricht) 
        antwort = s.recv(1024) 
        if antwort == "YOUCAN":
         break
        else:
         print "Irgendwas war wohl falsch..."
    print "Nu bist'e drin!"
    s.close()
except:
 print "keine Internetverbindung"
 s.close()
finally:
  try: 
    s.close()
Geht nicht gibts nicht(Das gilt auch für Python)!
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Seh ich das richtig, dass du das Passwort im Klartext ohne jegliche weitere Sicherheitsmaßnahmen versendest?
BlackJack

@dodo: Das ist Murks. Die Einrückung ist kaputt und die Socket-Programmierung ist alles andere als robust. Sicher ist die Kommunikation auch kein Stück.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

webspider hat geschrieben:Seh ich das richtig, dass du das Passwort im Klartext ohne jegliche weitere Sicherheitsmaßnahmen versendest?
Wenn MD5 schon unsicher ist, wieso sich dann mit hashes und sicheren Verbindungen abmühen? :twisted:
the more they change the more they stay the same
lunar

@dod: Der Code ist kaputt, an machen Stellen vergisst Du sogar, Funktionen aufzurufen (i.e. "komm, addr = ss.accept").

@Dav1d: Was hat MD5 mit dem Quelltext des OP zu tun?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

lunar hat geschrieben:@Dav1d: Was hat MD5 mit dem Quelltext des OP zu tun?
Nichts
the more they change the more they stay the same
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Eine Challange/Response Geschichte würde mehr Sinn machen. Lesestoff + Links z.B. hier: http://www.pylucid.org/permalink/42/sic ... ohne-https

Abgesehen von der Code Logik, ist der Code schlecht formatiert. Am besten mal PEP-8 ansehen: http://wiki.python-forum.de/PEP%208%20% ... setzung%29

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten