Hallo,
was wären denn sinnvolle Lösungen ein Login auf einer Internetseite zu gestalten? (Die Suche im Forum hat immer nur gebracht, wie man sich mit Python selber irgendwo einloggen kann, aber nicht wie sowas selber gemacht wird.)
Ich hätte als Idee nur ein CGI-Skript, welches ein entsprechendes Formular verarbeitet. Hierbei werden die Passwörter nur mit md5-Verschlüsselung in einer Datenbank gespeichert (wie im Buch "Objektorientierte Programmierung mit Python" beschrieben). Dabei sehe ich ein Problem, falls das Passwort vergessen wurde. Wenn es verschlüsselt ist, kann man es ja nur noch schwer/unmöglich per e-Mail dem Vergesser zukommen lassen.
Hier wäre nur noch eine Auto-Generierung eines Passwortes möglich, welches dann geschickt wird.
Was habt ihr denn dazu für Meinungen?
Ist es unbedenklich die Loginnamen und Passwörter in der gleichen Datenbank wie die normalen Daten zu speichern oder sollte man noch eine zusätzliche Datenbank nur dafür einrichten (kostet ja alles mehr Geld )
Schön wäre es auch, wenn soetwas bei Django schon gleich mit enthalten wäre (habe aber noch nichts derartiges gefunden).
So long
Carsten
[gelöst] Login - wie realisieren?
Logins löst man normalerweise entweder mit Cookies oder mit Session-IDs in URLs. Ich kenne Django nicht näher, aber es wird sicher (mindestens) eine der beiden Varianten unterstützen um Sessions zu ermöglichen.
Ich würde keine Passwörter im Klartext auf dem Server speichern. Es besteht immer die Gefahr, das jemand "einbricht" und viele Leute sind so phantasielos das sie die gleiche Kombination von Login und Passwort an mehreren Stellen benutzen. Wenn dann noch die E-Mail-Adresse in der DB zu finden ist, dann hat der Angreifer auch gleich Zugriff auf ein paar E-Mail-Konten.
Ich würde keine Passwörter im Klartext auf dem Server speichern. Es besteht immer die Gefahr, das jemand "einbricht" und viele Leute sind so phantasielos das sie die gleiche Kombination von Login und Passwort an mehreren Stellen benutzen. Wenn dann noch die E-Mail-Adresse in der DB zu finden ist, dann hat der Angreifer auch gleich Zugriff auf ein paar E-Mail-Konten.
- Damaskus
- Administrator
- Beiträge: 995
- Registriert: Sonntag 6. März 2005, 20:08
- Wohnort: Schwabenländle
Hi,
bei PHP löse ich Logins immer folgend.
Passwörter per MD5 verschlüsseln und die dann in der gleichen DB speichern.
Beim Login das PW wieder verschlüsseln und dann mit dem Schlüssel aus der DB vergleichen. Falls OK setzte ich eine Session und erzeuge darin eine Prüfvariable
Jetzt musst das ganze nur noch in Python realisieren
Wenn möglich solltest du Sessions verwenden. Da viele Cookies deaktiviert haben.
Gruß
Damaskus
bei PHP löse ich Logins immer folgend.
Passwörter per MD5 verschlüsseln und die dann in der gleichen DB speichern.
Beim Login das PW wieder verschlüsseln und dann mit dem Schlüssel aus der DB vergleichen. Falls OK setzte ich eine Session und erzeuge darin eine Prüfvariable
Code: Alles auswählen
$SESSION[login] = "ok"
Wenn möglich solltest du Sessions verwenden. Da viele Cookies deaktiviert haben.
Gruß
Damaskus
@BlackJack: im Klartext speichern werde ich also auf alle Fälle umgehen
@Damaskus: ja, das habe ich mit der md5-Verschlüsselung gemeint Das mit den Cookies habe ich mir auch schon so gedacht, bin auch selber kein großer Freund davon. Also meinst du in der gleichen Datenbank wäre schon ok, kann dem jemand zustimmen? (nicht, das ich kein Vertrauen in dich hätte, aber es ist ein sensibles Thema, da möchte ich gern noch andere Meinungen hören)
Dann werde ich es wahrscheinlich wirklich so machen, dass ein Zufallspasswort generiert wird, falls das Alte versehentlich aus dem Gedächtnis gelöscht wurde
Für Django habe ich schonmal folgendes gefunden, aber nur überflogen:
http://www.djangoproject.com/documentat ... ntication/
So long
Carsten
@Damaskus: ja, das habe ich mit der md5-Verschlüsselung gemeint Das mit den Cookies habe ich mir auch schon so gedacht, bin auch selber kein großer Freund davon. Also meinst du in der gleichen Datenbank wäre schon ok, kann dem jemand zustimmen? (nicht, das ich kein Vertrauen in dich hätte, aber es ist ein sensibles Thema, da möchte ich gern noch andere Meinungen hören)
Dann werde ich es wahrscheinlich wirklich so machen, dass ein Zufallspasswort generiert wird, falls das Alte versehentlich aus dem Gedächtnis gelöscht wurde
Für Django habe ich schonmal folgendes gefunden, aber nur überflogen:
http://www.djangoproject.com/documentat ... ntication/
So long
Carsten
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Lösung für Django:
Und hier die generische WSGI Lösung:
Und hier noch eine lösung für den Colubrid WSGI Request Handler: http://wsgiarea.pocoo.org/colubrid/snippets/session/
Code: Alles auswählen
from django.contrib.auth import authenticate, login
from django.template import Context, load_template
def login_view(req):
if req.META['METHOD'] == 'POST':
username = req.POST.get('username')
password = req.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(user, req)
# login funktioniert
else:
# login funktioniert nicht
else:
# keine daten abgesendet
Code: Alles auswählen
from flup.middleware.session import SessionMiddleware, DiskSessionStore
def app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
session = environ['com.saddi.service.session']
# hier kann man jetzt was mit dem session dict machen
store = DiskSessionStore('/tmp')
app = SessionMiddleware(store, app)
TUFKAB – the user formerly known as blackbird