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
Passwortgenerator für .htpasswd in Python?
Ah, schon was gefunden:
Ach schade, das gibt es nur unter UNIX...
Code: Alles auswählen
>>> import crypt
>>> crypt.crypt('Dein PW','aZ'),
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
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
Hier mal noch etwas Stoff zum Nachlesen http://de.selfhtml.org/diverses/htaccess.htm
Hans
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Hans,
also der Zugriff ist zumindest über ftp möglich, sonst könntest Du auf Deinen Webspace keine .htaccess hochladen.
Gruß
Dookie
also der Zugriff ist zumindest über ftp möglich, sonst könntest Du auf Deinen Webspace keine .htaccess hochladen.
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Ich wollte sowas http://python.sandtner.org/viewtopic.php?t=1856
Was mir da gerade auffällt.... User und Passwort werden dabei in Klartext durch's Netz geschickt... Das gefällt mich nicht so ganz...hans hat geschrieben:Wieso verschlüsseln? Normalerweise sollte die Datei .htaccess via http oder ftp nicht erreichbar sein.
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi,
Gruß
Dookie
Das lässt sich aber durch verwendung eines https-Servers leicht ändern.Was mir da gerade auffällt.... User und Passwort werden dabei in Klartext durch's Netz geschickt... Das gefällt mich nicht so ganz...
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
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!Dookie hat geschrieben: Das lässt sich aber durch verwendung eines https-Servers leicht ändern.
Kann man mit Python SSL Verbindungen herstellen??? Ich hab was gefunden von httplib.HTTPSConnection:
http://aspn.activestate.com/ASPN/Cookbo ... ipe/117004
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?
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()
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?
Naja, was mann auch mit Javascript anfängt, im grunde bekommt man damit nichts hin was wirklich sicher ist...Dookie hat geschrieben:hmm nö, da müsstest wohl eher was mit Javascript basteln.
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...
Ein ganz klares Jein von meiner Seite aus
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ß...
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ß...
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
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
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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...
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...
-
- User
- Beiträge: 5
- Registriert: Samstag 12. Mai 2007, 18:35
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.
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.