Seite 1 von 2

Passwortgenerator für .htpasswd in Python?

Verfasst: Freitag 23. Juli 2004, 14:26
von genrich
Hi!

Gibt es eine Möglichkeit ein Passwort für .htpasswd zu "verschlüsseln" sodas man es auf einen Apache Server packen kann???

Mfg.

Genrich

Verfasst: Freitag 23. Juli 2004, 14:27
von genrich
Ah, schon was gefunden:

Code: Alles auswählen

>>> import crypt
>>> crypt.crypt('Dein PW','aZ'),
Ach schade, das gibt es nur unter UNIX...

Verfasst: Freitag 23. Juli 2004, 15:25
von hans
Wieso verschlüsseln? Normalerweise sollte die Datei .htaccess via http oder ftp nicht erreichbar sein. Da sind nur lokale Zugriffe erlaubt oder irre ich da etwa? Das interessiert mich jetzt aber wirklich.

Hier mal noch etwas Stoff zum Nachlesen http://de.selfhtml.org/diverses/htaccess.htm

Hans

Verfasst: Freitag 23. Juli 2004, 15:49
von Dookie
Hi Hans,

also der Zugriff ist zumindest über ftp möglich, sonst könntest Du auf Deinen Webspace keine .htaccess hochladen.


Gruß

Dookie

Verfasst: Freitag 23. Juli 2004, 15:59
von genrich

Verfasst: Freitag 23. Juli 2004, 17:40
von genrich
hans hat geschrieben:Wieso verschlüsseln? Normalerweise sollte die Datei .htaccess via http oder ftp nicht erreichbar sein.
Was mir da gerade auffällt.... User und Passwort werden dabei in Klartext durch's Netz geschickt... Das gefällt mich nicht so ganz...

Verfasst: Freitag 23. Juli 2004, 18:34
von Dookie
Hi,
Was mir da gerade auffällt.... User und Passwort werden dabei in Klartext durch's Netz geschickt... Das gefällt mich nicht so ganz...
Das lässt sich aber durch verwendung eines https-Servers leicht ändern.


Gruß

Dookie

Verfasst: Freitag 23. Juli 2004, 22:34
von genrich
Dookie hat geschrieben: Das lässt sich aber durch verwendung eines https-Servers leicht ändern.
Theoretisch schon... Bei Hosteurope kann man allerdings nur ein SSL-Proxy einrichten... Bei dem werden wohl Form.-Daten nicht verschlüßelt übertragen... Zumindest warnt Firefox davor!

Verfasst: Mittwoch 28. Juli 2004, 17:14
von Leonidas
Tja, HTTP ist halt nicht geeignet sensible daten zu verschichen. Abhilfe: SLL Tunnels -> HTTPS, SSH Tunnels -> stunnel.

Verfasst: Montag 2. August 2004, 17:03
von genrich
Kann man mit Python SSL Verbindungen herstellen??? Ich hab was gefunden von httplib.HTTPSConnection:
http://aspn.activestate.com/ASPN/Cookbo ... ipe/117004

Code: Alles auswählen

#!/usr/bin/env python

import httplib

CERTFILE = '/home/robr/mycert'
HOSTNAME = 'localhost'

conn = httplib.HTTPSConnection(
	HOSTNAME,
	key_file = CERTFILE,
	cert_file = CERTFILE
)
conn.putrequest('GET', '/ssltest/')
conn.endheaders()
response = conn.getresponse()
print response.read()
Erst mal weiß ich nicht wie man das CERTFILE erstellen kann... Zweitens weiß ich nicht ob man damit eine richtige Kommunikation zwischen Server und Client (Browser) Aufbauen kann...


Was ich überhaupt erreichen will, ist ja nicht die sichere Authentifizierung, sondern ehr die möglichkeit verschlüßelt Daten von Server zu Client und zurück schicken zu können... Ist das mit "httplib.HTTPSConnection" möglich oder muß man da an "socket.ssl" ran?

Verfasst: Montag 2. August 2004, 17:54
von Dookie
du kannst die Daten auch pgp oder gpg verschlüsseln.

Verfasst: Montag 2. August 2004, 18:01
von genrich
Dookie hat geschrieben:du kannst die Daten auch pgp oder gpg verschlüsseln.
Aber kann das Firefox ohne Plugins senden???

Ich will ja nur ein paar Formulardaten nicht in planetext hin und her übermitteln...

Verfasst: Montag 2. August 2004, 18:38
von Dookie
hmm nö, da müsstest wohl eher was mit Javascript basteln.


Gruß

Dookie

Verfasst: Montag 2. August 2004, 19:10
von genrich
Dookie hat geschrieben:hmm nö, da müsstest wohl eher was mit Javascript basteln.
Naja, was mann auch mit Javascript anfängt, im grunde bekommt man damit nichts hin was wirklich sicher ist...
Ich meine wenn einer schon soviel energie aufbringen würde, den Datenverkehr zwischen Client und Server zu belauschen, dann kommt er doch ziemlich schnell darauf, das mit dem JS die wichtigen Daten (bsp. Passwort) entschlüsseln kann...

Verfasst: Montag 2. August 2004, 20:03
von Dookie
und da beisst sich die Python wieder in den Schwanz, http is eben nicht sicher, darum gibts https


Dookie

Verfasst: Montag 2. August 2004, 22:34
von genrich
Ein ganz klares Jein von meiner Seite aus :cry:

Hosteurope bietet leider kein echtes https an, sondern nur ein sog. SSL-proxy: http://www.hosteurope.de/?direct=225

Mit dem werden aber nur die Daten vom Server zum Client verschlüsselt, aber nicht anders herrum... Doch gerade beim Einloggen, werden User und Passwort vom Client zum Server geschickt. Das ist somit trotz "https" nur im Plaintext möglich...

Wenn es keine Möglichkeit gibt mittels Python und socket.ssl() etwas zu basteln, dann werde ich einfach .htaccess nutzen :(
Doch ich hab noch nirgends eine einfache beschreibung gefunden, wie man mit socket.ssl() umgehen muß...

Verfasst: Dienstag 3. August 2004, 15:18
von genrich
Mir fällt da gerade eine Lösung ein, auch wenn diese nicht wirklich Sicher ist... Es werden zumindest keine Passwörter in Plaintext übermittelt...

Die Idee:

Das Pythonskript auf dem Server schickt ein normales HTML-Formular zum einloggen zum Client.
Darin befindet sich eine "zufällige" Zeichenkette.

In diesem LogIn-Formular wird per JavaScript das eingegebene Passwort mit der Zufälligen Zeichenkette "verschlüsselt".

Zum Server wird nur der Username und das "verschlüßelte" Passwort geschickt (nicht aber die "zufällige" Zeichenkette -> Schlüssel)

Da der Server die "zufällige" Zeichenkette sich gemerkt hat, kann er das Passwort entschlüsseln...


Wie gesagt, es ist nicht wirklich sicher... Wer den Datenverkehr in beiden Richtungen abhöhrt, der kommt auch rein :( Es reicht allerdings nicht, nur die gesendeten Daten einfach noch mal an den Server zu schicken, weil die "zufällige" Zeichenkette ihre gültigkeit verloren hat.
Zum "knacken" der Passwortes muß man vielmehr die Daten vom Server zum Client und die zurückgeschickten Daten abfangen. Dann muß man sich aber noch mal mit dem JavaScript außeinander setzten. Auch wenn es für Programmiere ein großes Problem ergeben sollte, das JavaScript so umzustricken, das man das Passwort zurück entschlüßeln kann...

Zumindest setzt diese kompleziertere Methode sehr viel Kriminelle energie vorraus. Es ist nicht ganz so "einfach", als eine Absicherung nur mit .htaccess

Verfasst: Dienstag 3. August 2004, 16:10
von genrich
Vergessen zu erwähnen.... Das User-Passwort ist natürlich auf dem Server als md5, hashwert oder per crypt() abgespeichert und sollte danach verglichen werden :)

Verfasst: Dienstag 10. August 2004, 10:01
von jens
Sehr Interessant, du bringst mich da auf eine Idee...

Absolut richtig, das ohne SSL keine richtige Sicherheit gewährleistet ist... Allerdings stinkt es mir auch, das bei meinen kleinen Python-cgi-Homepage-Tools der Login mit dem senden von User/Passwort im Klartext erfolg...

Es gibt doch da von Ralf Mieke die Implementierung des MD5-Fingerprint in JavaScript:
http://www.miekenet.de/publikationen/publi01.html
Ich hab es getestet und es funktioniert! Die MD5 Checksummen sind identisch mit der Python MD5-Summe.

Das könnte man nutzen um zumindest das Passwort nicht mehr im Klartext übermitteln zu müssen...


Also meine Idee ist es, das Passwort vom JavaScript als MD5 zum Server zu senden...
Den UserNamen könnte man nach genrichs Idee mit dieser "Zufälligen Zeichenkette verschlüsseln"...

Auf dem Server wird der UserName entschlüßelt. Mit dem entschlüsselten UserNamen schaut man dann in eine art htaccess-Datei nach dem MD5-Passwort und vergleicht es mit dem geschickten...

Jetzt ist nur ein Problem, das auf dem Server im Klartext der UserName und das MD5-Passwort stehen... Kommt man an diese Daten herran, könnte man sich damit einloggen....
Um das zu verhinden, werden nicht die MD5-Passwörter, die man vom JavaScript erhält, direkt auf dem Server gespeichert, sondern davon wieder ein MD5-Fingerprint...


Wenn ich mir das recht überlege ist die Sicherheit nur gerinfügig höher als in deiner Variante... Aber mit gefällt das besser :) Ich werd das mal versuchen umzusetzten...

Verfasst: Donnerstag 14. Juni 2007, 01:46
von Master_of_Mechanic
Hallo
wäre eine schöne Sache mit hilfe des Moduls crypt verschlüsselte Passwörter für die .htpasswd Datei zu erstellen. Leider bleibe ich als Windows user dabei aussen vor. :(

was gibt es da für alternativen. ich möchte einfach nur ein Passwort (welches ich mit einem Pythonskript "verwalte") so verschlüsseln das es in die .htpasswd Datei auf meiner Webpage "passt"

Das DOS-Utility HTPASSWD.EXE finde ich nicht gerade ansprechend, vorallem da es sich nicht in Python einbauen läst. :D