kann man .htusers aus einem Formular heraus füttern?
Sokrates
- programmiertechnik
weis jemand wie man aus einem Formular, Script oder wie auch immer daten dynamisch in die .htusers Datei hineinbekommt. Im groben gehts darum, daß ich als Ergebniss auf eine Formularanfrage eine Bestätigung ausgeben möchte und diese auch gleich im Server speichern damit der Kunde später drauf zugreifen kann. er bekommt zusätzlich eine e-mail in dem der Link genannt ist und kann dann wann immer er nochmal die Bestätigung braucht diese verschlüsselt aus dem Netz ziehen. Ich arbeite dabei übrigens noch ganz ohne SQL-Datenbank obwohl ich durchaus Zugriff drauf hätte. So nun zu der eigentlichen Frage:
Ist es möglich in der Ergebnissseite eines Formulars zwei Variablen aus den vorher ausgefüllten Formular als User und Passwort in die .htaccess dynamisch reinzuschreiben? wenn ja gibt es ein tut/man dazu irgendwo. Hab leider nichts finden können.
Wenn nicht, welche Methode würdet ihr vorschlagen? SQL?
Sokrates
moin!
ist doch nur ne textdatei. die kannst du ganz normal beschreiben.
die syntax findest du hier:
http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz
gruß.
roger.
moin!
ist doch nur ne textdatei. die kannst du ganz normal beschreiben.
die syntax findest du hier:
http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz
habe ich mir schon längst komplett zu gemüte geführt aber da steht nichts davon wie man sie automatisch generieren kann.
gruß.
roger.
hallo,
http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz
habe ich mir schon längst komplett zu gemüte geführt aber da steht nichts davon wie man sie automatisch generieren kann.
Ja, weil ich während der Überarbeitung dieser Seite überhaupt nicht auf die Idee kam, daß jemand so eine Lösung suchen würde.
Grüße aus Berlin
Christoph S.
hallo,
http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz
habe ich mir schon längst komplett zu gemüte geführt aber da steht nichts davon wie man sie automatisch generieren kann.Ja, weil ich während der Überarbeitung dieser Seite überhaupt nicht auf die Idee kam, daß jemand so eine Lösung suchen würde.
sollte keine Kritik oder ähnl. sein. Ich habe halt eine Idee gehabt um ein bestimmtes Problem so effizient wie möglich zu lösen und habe nach über 4-stündiger Suche nichts geeignetes gefunden. Natürlich ist die wunderbare Dokumentation Selfhtml seit version 2.0 die erste Anlaufstelle bevor ich Foren bemühe. Leider habe ich den denkfehler gemacht einer datei die mit .ht beginnt nicht die selben Eigenschaften zuzuschreiben wie einer ordinären Textdatei. Mea culpa, mea culpa, mea maxima culpa.
hi,
Ist es möglich in der Ergebnissseite eines Formulars zwei Variablen aus den vorher ausgefüllten Formular als User und Passwort in die .htaccess dynamisch reinzuschreiben?
Natürlich ist es das - es ist schließlich nur eine einfache Textdatei.
wenn ja gibt es ein tut/man dazu irgendwo.
Das kommt wohl erst mal darauf an, welche serverseitige Technik du dazu verwenden willst.
Wenn es beispielsweise das populäre PHP sein sollte, schau dir im Manual und auf Tutorial-Seiten wie http://php-faq.de/ und http://tut.php-q.net/ an, wie man Formulardaten in Empfang nimmt, und wie Dateioperationen funktionieren.
Zum Verschlüsseln des Passwortes wirst du dann vermutlich noch die Funktion crypt() brauchen.
Wenn nicht, welche Methode würdet ihr vorschlagen?
Wenn du wirklich mit/für Kunden arbeitest, wie du schriebst - dann würde ich vor allem empfehlen, dass du dir genügend Ahnung von der Technik, die du verwenden willst, besorgst - bevor am Ende etwas schiefgeht.
gruß,
wahsaga
hi,
Ist es möglich in der Ergebnissseite eines Formulars zwei Variablen aus den vorher ausgefüllten Formular als User und Passwort in die .htaccess dynamisch reinzuschreiben?
Natürlich ist es das - es ist schließlich nur eine einfache Textdatei.
ich bin nicht erst seit Gestern im Geschäft, danke. Aber es ist auch eine ganz besondere Textdatei da Sie mit .ht anfängt. Wie ich mit Formulardaten umgehe weis ich sehr gut, hab Formulare mit bis zu 150 Variablen und über 100 Plausibilitäten dachte nur es könnte sein das .htusers einen besonderen Schutz der Apachen genießt.
wenn ja gibt es ein tut/man dazu irgendwo.
Das kommt wohl erst mal darauf an, welche serverseitige Technik du dazu verwenden willst.
Wenn es beispielsweise das populäre PHP sein sollte, schau dir im Manual und auf Tutorial-Seiten wie http://php-faq.de/ und http://tut.php-q.net/ an, wie man Formulardaten in Empfang nimmt, und wie Dateioperationen funktionieren.
Gut, nicht das ich genante Seiten nicht alle kennen würde. Aber wenn mich ein solche Frage als Anfänger darstehen läßt werde ich mal lieber noch ein paar Tuts diesbezgl. durchlesen.
Zum Verschlüsseln des Passwortes wirst du dann vermutlich noch die Funktion crypt() brauchen.
das hatte ich mir auch schon gedacht. Aber ich wollte meine Frage vorweg geklärt haben.
Wenn nicht, welche Methode würdet ihr vorschlagen?
Wenn du wirklich mit/für Kunden arbeitest, wie du schriebst - dann würde ich vor allem empfehlen, dass du dir genügend Ahnung von der Technik, die du verwenden willst, besorgst - bevor am Ende etwas schiefgeht.
Danke für deine Sorgen aber ich bin kein Amateur auf dem Gebiet nur mit htaccess hatte ich bisher nicht viel gemacht.
Mit internetten Grüßen
Sokrates
hi,
ich bin nicht erst seit Gestern im Geschäft, danke. Aber es ist auch eine ganz besondere Textdatei da Sie mit .ht anfängt.
Ja, mindestens so besonders wie eine, die mit .hurz anfängt, blubb.txt heißt, oder auf .html endet.
Wie ich mit Formulardaten umgehe weis ich sehr gut, hab Formulare mit bis zu 150 Variablen und über 100 Plausibilitäten
Wow! Na bei der Quantität dürfte ja dann alles in Ordnung sein.
dachte nur es könnte sein das .htusers einen besonderen Schutz der Apachen genießt.
Sie unterliegt den gleichen Schutzmechanismen, wie andere Dateien auch.
Gut, nicht das ich genante Seiten nicht alle kennen würde.
Dass du dann noch nach einer Lösung für deine Aufgabe fragen musst, verwundert mich aber.
Aber wenn mich ein solche Frage als Anfänger darstehen läßt werde ich mal lieber noch ein paar Tuts diesbezgl. durchlesen.
Wird wohl nicht schaden.
Danke für deine Sorgen aber ich bin kein Amateur auf dem Gebiet nur mit htaccess hatte ich bisher nicht viel gemacht.
Auf dem Gebiet des sich-selber-schlau-machens scheinst du mir aber nicht unbedingt ein Profi zu sein.
gruß,
wahsaga
Tag Wahsager,
ich bin nicht erst seit Gestern im Geschäft, danke. Aber es ist auch eine ganz besondere Textdatei da Sie mit .ht anfängt.
Ja, mindestens so besonders wie eine, die mit .hurz anfängt, blubb.txt heißt, oder auf .html endet.
[...]
dachte nur es könnte sein das .htusers einen besonderen Schutz der Apachen genießt.
Sie unterliegt den gleichen Schutzmechanismen, wie andere Dateien auch.
Danke, das ist der Hinweis der Nirgends zu finden war. IMHO ist die Annahme das .ht Dateien anderen Gesetzen folgen könnten nicht ganz so Haarsträubend wie du es hier darstellst aber was solls, in nem Thread an dem ich nicht beteiligt bin würde ich über deinen Sarkasmus sogar schmunzeln.
Gut, nicht das ich genante Seiten nicht alle kennen würde.
Dass du dann noch nach einer Lösung für deine Aufgabe fragen musst, verwundert mich aber.
Aber wenn mich ein solche Frage als Anfänger darstehen läßt werde ich mal lieber noch ein paar Tuts diesbezgl. durchlesen.
Wird wohl nicht schaden.
Ich habe halt eine recht aussergewöhliche Idee gehabt um ein bestimmtes Problem so effizient wie möglich zu lösen und habe nach über 4-stündiger Suche nichts geeignetes gefunden was dieses Thema auch nur angeschnitten hat. Natürlich ist die wunderbare Dokumentation Selfhtml seit Version 2.0 die erste Anlaufstelle und auch nicht die letzte bevor ich Foren bemühe. Leider habe ich als windowsnutzer den denkfehler gemacht einer Datei die mit .ht beginnt nicht die selben Eigenschaften zuzuschreiben wie einer ordinären Textdatei. Wollte auch nicht wieder mit Trial and Error anfangen und da ist doch wohl ein Forum wie das hier die richtige Anlaufstelle..
Auf dem Gebiet des sich-selber-schlau-machens scheinst du mir aber nicht unbedingt ein Profi zu sein.
In Foren bin ich es gewohnt -meistens durch stöbern, selten aktiv fragend- das Leute auf Beiträge antworten wenn Sie eine Lösung dazu wissen und aus Lust an der Freude Lösungen für interessante Herausforderungen zu finden, Selbige stolz präsentieren. Übrigens bin ich darüber hinaus so drauf, das ich für jede Antwort auch jemand anderem im Forum helfe weshalb ich mir den unterschweligen Vorwurf es mir zu einfach zu machen auch nicht stehen lassen möchte.
In der IT-Welt gibt es zahlreiche Gebiete auf die man sich spezialisieren kann und das Menschliche Gehirn erlaubt es einen mit wenigen Worten -manchmal reichen dazu Sekunden ;)- präziser auf ein seltenes Problem zu reagieren als es Manuals oder Tutorials können. Die Lösung die ich suche wird sicher kaum 100 Zeichen überschreiten, das spezifische Know-How was dazu gehört diese 5 Zeilen zu verfassen umfasst jedoch wahrscheinlich die selbe Anzahl wie o.g. jedoch in Seiten gemessen. Wozu gibt es solche Foren. Siehst du dich mehr als aktiver Link-Hint-Automat oder was störte dich an der Frage? Wenn du kein Bock hast darauf helfend einzugehen || das ganze als offtopic kritisieren möchtest kannst du ja auch einfach den Klick auf Antwort unterlassen.
Danke trotzdem für oben erwähnten und sogar sachlich formulierten Hinweis. Ich werde mich jetzt dann an das läpische Anhängen der php Variablen in die .htusers machen.
Viel Spaß weiterhin
Sokrates
Hallo erstmal!
Ist es möglich in der Ergebnissseite eines Formulars zwei Variablen aus den vorher ausgefüllten Formular als User und Passwort in die .htaccess dynamisch reinzuschreiben? wenn ja gibt es ein tut/man dazu irgendwo. Hab leider nichts finden können.
if(alles_richtig($daten))
{
shell_exec($pfad.'/htpasswd '.$noch_ein_pfad.'/.ht'.$gruppe.' '.$user.' '.$pass);
}
http://httpd.apache.org/docs/2.2/programs/htpasswd.html
Gruß aus Berlin!
eddi
Hallo eddi,
Ist es möglich in der Ergebnissseite eines Formulars zwei Variablen aus den vorher ausgefüllten Formular als User und Passwort in die .htaccess dynamisch reinzuschreiben? wenn ja gibt es ein tut/man dazu irgendwo. Hab leider nichts finden können.
if(alles_richtig($daten))
{
shell_exec($pfad.'/htpasswd '.$noch_ein_pfad.'/.ht'.$gruppe.' '.$user.' '.$pass);
}
> <http://httpd.apache.org/docs/2.2/programs/htpasswd.html>
>
> Gruß aus Berlin!
> eddi
Dir sei vielmals gedankt, deine Großzügigkeit ist mir schon einmal hier begegnet und ich verneige mich vor deinen Wissen. Werds jetzt mal ausprobieren und vom Gelingen berichten.
Vielen Dank.
Re:
... ich verneige mich vor deinen Wissen.
kein Grund gleich zum Bückstück zu werden ;)
SCNR
Gruß aus Berlin!
eddi
Hi XaraX,
if(alles_richtig($daten))
{
shell_exec($pfad.'/htpasswd '.$noch_ein_pfad.'/.ht'.$gruppe.' '.$user.' '.$pass);
}
Es geht aber auch noch etwas einfacher bzw. anders - z.B. dann, wenn man keinen Zugriff auf das htpasswd Programm hat, man kann die Passwörter mit einer Scriptsprache generieren und dadurch ein WebInterface für die User-Verwaltung realisieren.
In vielen Scriptsprachen gibt es die Crypt Funktionen - allerdings haben die meiner Meinung nach einen Nachteil: Auf die Art und Weise erzeugte Hashs funktionieren nur auf einem Apache unter Linux, eine Portierung auf Windows ist dann nicht mehr möglich. Deshalb gibt es eine Art Nachfolge von Crypt, nämlich ein Crypt, was auf MD5 basiert ist - Implementationen davor sind in Perl, das Modul [Crypt::PasswdMD5](http://search.cpan.org/~luismunoz/Crypt-PasswdMD5-1.3/PasswdMD5.pm), in Phyton [md5crypt.py](http://www.sabren.net/code/python/crypt/md5crypt.py) und für PHP die Übersetzung davon von Fabian St. und mir: [md5crypt.lib.php](http://tutorial.riehle-web.com/scripts/show.php?datei=md5crypt-1.0.lib).
Ein Vorteil ist eben, dass man die .htpasswd Dateien dann auch zwischen Windows und Linux System austauschen kann - Ich hatte sogar schon mal ein WebInterface dazu gebastelt, welches eine bequeme Verwaltung von Usern und Gruppen ermöglichte. So etwas wäre vielleicht auch mal einen Tipps&Tricks Artikel wert ;-)
MfG, Dennis.
--
Mein SelfCode: [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)
Die [FlatBox 0.3](http://tutorial.riehle-web.com/scripts/#flatbox) mit [Dokumentation](http://tutorial.riehle-web.com/scripts/flatbox/doku.html) ist da!
Wissen ist gut, Können ist besser, aber das Beste und Interessanteste ist der Weg dahin! ([Detlef G.](http://forum.de.selfhtml.org/archiv/2003/12/66985/#m383511))
Hi Dennis,
die Funktion md5crypt_apache() ist schön, aber angesichts der um den Faktor 20 schnelleren Funktion crypt()
scheidet sie, wie auch mein Vorschlag, aus ;(
Gruß aus Berlin!
eddi
Hi XaraX,
Hm, irgendwie hatte ich heute nachmittag hier schon mal eine Antwort geschrieben, aber weiß der Kuckuck wie - irgendwie habe ich es geschafft sie nicht abzuschicken :-\
die Funktion md5crypt_apache() ist schön, aber angesichts der um den Faktor 20 schnelleren Funktion
crypt()
scheidet sie, wie auch mein Vorschlag, aus ;(
Nun, die crypt()-Funktion ist aber keine Alternative zur md5apache_crypt(). Auf neueren Systemen unterstützt crypt() zwar MD5, aber:
„CRYPT_MD5 - MD5 encryption with a twelve character salt starting with $1$“
Du musst den Salt String mit $1$ beginnen lassen, damit die „Cryptung“ auf MD5-Basis durchgeführt wird, jedoch für den Apache:
„htpasswd encrypts passwords using either a version of MD5 modified for Apache,
or the system's crypt() routine“
Für den Apachen wurde das noch mal etwas abgeändert - diese Abänderung besteht darin, dass der Salt mit $apr1$ beginnt und leider kann man die aktuelle Implementation von crypt() in PHP noch nicht dazu bringen bei einem Salt, der nicht mit $1$ beginnt den Hash auf MD5-Basis zu berechnen.
Wenn du für den Apache also Hashs auf MD5-Basis verwenden willst (Grund: Platformunabhängigkeit) und diese mit PHP erzeugen willst, so hilft dir crypt() nicht weiter und du wirst auf md5crypt_apache() zurückkommen müssen ;-)
Und zur Performance: Die Hashs müssen ja nicht ständig generiert werden, sondern nur einmal, deshalb finde ich den Performance Nachteil verschmerzbar.
MfG, Dennis.
Hi Dennis,
die Funktion md5crypt_apache() ist schön, aber angesichts der um den Faktor 20 schnelleren Funktion
crypt()
scheidet sie, wie auch mein Vorschlag, aus ;(Nun, die crypt()-Funktion ist aber keine Alternative zur md5apache_crypt().
meine Tests an einem frisch aufgesetzten Apache 2.2.0 mit mod_php 5.1.3-dev auf einem ungepachtem System mit kernel 2.6.15.1 strafen Dich hier Lügen!
fwrite($dateizeiger,'name:'.crypt($passwd)); ist absolut ausreichend.
Gruß aus Berlin!
eddi
Hi XaraX,
meine Tests an einem frisch aufgesetzten Apache 2.2.0 mit mod_php 5.1.3-dev auf einem ungepachtem System mit kernel 2.6.15.1 strafen Dich hier Lügen!
fwrite($dateizeiger,'name:'.crypt($passwd)); ist absolut ausreichend.
Natürlich funktioniert das, aber dann hast du keinen Hash auf MD5-Basis, sondern einen Hash auf der alten Basis, AFAIK DES oder so ähnlich heißt die.
Versuch mal die so (unter Linux) erzeugte .htusers Datei auf einem Windows Rechner zu verwenden - du wirst scheitern...
Aber ich würde mich natürlich freuen, mich eines besseren belehren zu lassen ;-)
MfG, Dennis.
Hi Dennis,
meine Tests an einem frisch aufgesetzten Apache 2.2.0 mit mod_php 5.1.3-dev auf einem ungepachtem System mit kernel 2.6.15.1 strafen Dich hier Lügen!
fwrite($dateizeiger,'name:'.crypt($passwd)); ist absolut ausreichend.Natürlich funktioniert das, aber dann hast du keinen Hash auf MD5-Basis, sondern einen Hash auf der alten Basis, AFAIK DES oder so ähnlich heißt die.
beginnt mit "$1$" ist also eine MD5-Prüfsumme
Versuch mal die so (unter Linux) erzeugte .htusers Datei auf einem Windows Rechner zu verwenden - du wirst scheitern...
mangels apache auf einem Windowsystem, würde ich Dich bitten zu bestätigen, das auch eine MD5-Prüfsumme dort scheitern. Da ich interpretieren muß, daß Deine Überlegenungen von DES-basierte Verschlüsselung ausgehen.
Gruß aus Berlin!
eddi
Hi XaraX,
Natürlich funktioniert das, aber dann hast du keinen Hash auf MD5-Basis, sondern einen Hash auf der alten Basis, AFAIK DES oder so ähnlich heißt die.
beginnt mit "$1$" ist also eine MD5-Prüfsumme
Ich habe mich gestern Abend sehr kurz gehalten und bin schon davon ausgegangen, dass ich mich nicht wirklich verständlich ausgedrückt habe und du mich missverstehen wirst ;-) ich will jetzt noch mal versuchen, dass ganze ausführlich zu erklären, so gut, wie ich selber es eben weiß.
Fangen wir mit der MD5-Prüfsumme an - ein Verfahren, dass einen Hash aus einem String zieht, bei dem Hash handelt es sich entweder um eine 16-Bit langen RAW String oder (wie in PHP üblich) eine 32-Bit lange Hexadezimalzahl.
Der Sinn von MD5 Prüfsummen ist es, zu kontrollieren, ob zwei Texte/Inhalte identisch sind, denn nur wenn sie identisch sind, bilden sie die gleiche MD5-Prüfsumme. Es gibt bei MD5 keine Möglichkeit, einen Salt anzugeben, das würde das Verwenden der Prüfsummen ja noch viel schwerer wenn nicht gar unmöglich machen.
Crypt dient der wie auf PHP.net geschriebenen „One-way string encryption“. Damit die Hashs von zwei gleichen Strings nicht direkt gleich aussehen, wird der Salt verwendet - je nach Salt sieht dann der Hash etwas anders aus. Die „alten“ bzw. früher üblichen Implementationen von crypt basieren auf DES.
Frag mich jetzt nicht, warum, weshalb oder wie ;-) Das kann ich dir auch nicht beantworten. Jedenfalls hat man neuere Methoden erfunden - was weiß ich, vielleicht war die Implementation auf DES-Basis nicht sicher genug oder so. Aber ich will jetzt nicht spekulieren, Fakt ist, dass es Implementationen von crypt auf MD5 und Blowfish Basis gibt.
Jetzt soll die PHP Funktion crypt eben Zugang bieten zu:
Doch wie soll crypt unterschieden auf welcher Basis es arbeiten soll? Da haben sich die PHP Entwickler folgendes - meines Erachtens etwas kompliziertes - Verfahren ausgedacht:
Allerdings ist PHP ja eine „Multi-Platform-Sprache“ und nicht auf jedem System wird unbedingt jede der oben aufgelisteten Methoden unterstützt - deshalb checkt PHP bei der Installation, was auf dem System verfügbar ist. Ich werde irgendwie jetzt grade aus der PHP Manual Seite auch nicht so ganz schlau - für mich sieht es so aus, als wäre nicht eindeutig definiert, auf welcher Basis PHP-crypt default-mäßig arbeitet.
Wie auch immer, du wirst es jedenfalls nicht schaffen, einen MD5-crypt-Hash mit der PHP Funktion crypt() zu erzeugen, du kommst du keinem Ergebnis, dass so aussieht wie
./htpasswd -nb -m username mein_password
Du schaffst es einfach nicht, den Magic String auf $apr1$ zu setzen, die Neuerung an der MD5-Crypt Implementation gegenüber der DES-Crypt Implementation ist nämlich, dass nicht nur ein Salt, sonder auch ein sogenannter Magic String genutzt wird, PHP setzt den auf $1$, aber Apache will für die Hashs in seiner .htusers Datei eben $apr1$ haben und um das zu erreichen, fehlt ein „Interface“, ein weiterer Parameter, mit dem man das beeinflussen könnten in dem crypt() von PHP.
Ich habe hier mal noch den alten Thread aus dem auch unsere Übersetzung entstanden ist heraugesucht.
Patrick hat das recht gut beschrieben:
„Nein, unix_md5_crypt() erzeugt etwas ganz anderes als das normale MD5.
Es ist eine neue Version des alten crypt(), die auf MD5 basiert und
ebenfalls ein Salt und zusätzlich noch einen "Magic String" verwendet.“
Und zu der Sache mit der Übergabe des Magic String hat er geschrieben:
„Ich habe allerdings gerade etwas in der Beschreibung zu crypt() im
PHP-Handbuch entdeckt: Wenn man ein Salt angibt, das mit "$1$" beginnt und
anschließend irgendetwas dran hängt, scheint die MD5-Version von crypt()
verwendet zu werden. Und das Ergebnis stimmt mit dem von unix_md5_crypt()
aus Crypt::PasswdMD5 überein! Allerdings habe ich es noch nicht geschafft,
in den dazu zu bringen, den Magic String vom Apache zu verwenden.“
Ich hoffe, ich konnte mich jetzt etwas verständlicher ausdrücken, ausführlicher war es denke ich auf jeden Fall ;-)
mangels apache auf einem Windowsystem, würde ich Dich bitten zu bestätigen, das auch eine MD5-Prüfsumme dort scheitern. Da ich interpretieren muß, daß Deine Überlegenungen von DES-basierte Verschlüsselung ausgehen.
Du meinst, dass es scheitert eine MD5-Prüfsumme in die .htusers Datei zu schreiben? Ja, dass kann ich dir bestätigen, ich habe es jetzt gerade nicht ausprobiert, aber ich weiß noch, dass das so eine der ersten Sachen war, die Fabian und ich vor dem Übersetzen des Moduls ausprobiert haben ;-)
Ich sage es noch mal: MD5-Prüfsumme ist das eine, MD5-Crypt ist das andere und DES-Crypt ist nochmal was anderes.
MfG, Dennis.
PS: Die erlaubte Titel-Länge hier im Forum scheint etwas kurz zu sein ;-) Ich musste Implementationen schon zu Impl. abkürzen, es gibt allerdings keine Fehlermeldungen bei zu langem Titel, nur das Vorschau-generieren/Absenden schlägt fehl... Da ich weiß, dass das CForum eigentlich solche Meldungen ausgibt und es bei mir auch tut, glaube ich eher an einen Fehler bei der hiesigen Installation...
Nabend,
Fangen wir mit der MD5-Prüfsumme an - ein Verfahren, dass einen Hash aus einem String zieht, bei dem Hash handelt es sich entweder um eine 16-Bit langen RAW String oder (wie in PHP üblich) eine 32-Bit lange Hexadezimalzahl
Byte bitte ;)
[...]
jep
Allerdings ist PHP ja eine „Multi-Platform-Sprache“ und nicht auf jedem System wird unbedingt jede der oben aufgelisteten Methoden unterstützt - deshalb checkt PHP bei der Installation, was auf dem System verfügbar ist. Ich werde irgendwie jetzt grade aus der PHP Manual Seite auch nicht so ganz schlau - für mich sieht es so aus, als wäre nicht eindeutig definiert, auf welcher Basis PHP-crypt default-mäßig arbeitet.
*lach* Das ist mir letzlich mit den Mail-Funktionen auch so gegangen. Immer, wenn man etwas ganz genau wissen will, muß man in den Quellcode schauen.
Wie auch immer, du wirst es jedenfalls nicht schaffen, einen MD5-crypt-Hash mit der PHP Funktion crypt() zu erzeugen, du kommst du keinem Ergebnis, dass so aussieht wie
./htpasswd -nb -m username mein_password
Du schaffst es einfach nicht, den Magic String auf $apr1$ zu setzen, die Neuerung an der MD5-Crypt Implementation gegenüber der DES-Crypt Implementation ist nämlich, dass nicht nur ein Salt, sonder auch ein sogenannter Magic String genutzt wird, PHP setzt den auf $1$, aber Apache will für die Hashs in seiner .htusers Datei eben $apr1$ haben und um das zu erreichen, fehlt ein „Interface“, ein weiterer Parameter, mit dem man das beeinflussen könnten in dem crypt() von PHP.
Da ist eben die "Ungenauigkeit": Apache scheint dies nur für Windows zu verlangen und gibt sich auf *NIX auch mit der Systemfunktion crypt() zufrieden
http://httpd.apache.org/docs/2.0/programs/htpasswd.html
"...htpasswd encrypts passwords using either a version of MD5 modified for Apache, _or the system's crypt() routine_..."
[...]
Ich hoffe, ich konnte mich jetzt etwas verständlicher ausdrücken, ausführlicher war es denke ich auf jeden Fall ;-)
jep
mangels apache auf einem Windowsystem, würde ich Dich bitten zu bestätigen, das auch eine MD5-Prüfsumme dort scheitern. Da ich interpretieren muß, daß Deine Überlegenungen von DES-basierte Verschlüsselung ausgehen.
Du meinst, dass es scheitert eine MD5-Prüfsumme in die .htusers Datei zu schreiben? Ja, dass kann ich dir bestätigen, ich habe es jetzt gerade nicht ausprobiert, aber ich weiß noch, dass das so eine der ersten Sachen war, die Fabian und ich vor dem Übersetzen des Moduls ausprobiert haben ;-)
Danke!
PS:...
Immer diese post scripta ;(
Gruß aus Berlin!
eddi
Hi XaraX,
Da ist eben die "Ungenauigkeit": Apache scheint dies nur für Windows zu verlangen und gibt sich auf *NIX auch mit der Systemfunktion crypt() zufrieden
http://httpd.apache.org/docs/2.0/programs/htpasswd.html
"...htpasswd encrypts passwords using either a version of MD5 modified for Apache, _or the system's crypt() routine_..."
Jein, früher war es üblich, dass unter Windwos die Passwörter als Plaintext notiert wurden und unter Linux mit der alten, üblichen crypt() Routine gehasht wurden.
Mit dem (neuen) Crypt auf MD5-Basis wurde nun eine Möglichkeit gefunden, Hashs von Passwörter zu erstellen, die platformunabhängig sind - dies ist eine Möglichkeit, die man Nutzen sollte.
MfG, Dennis.
if(alles_richtig($daten))
{
shell_exec($pfad.'/htpasswd '.$noch_ein_pfad.'/.ht'.$gruppe.' '.$user.' '.$pass);
}
> <http://httpd.apache.org/docs/2.2/programs/htpasswd.html>
hab es dann doch noch etwas simpler gelöst:
<?php
$pfad = 'SERVERPFAD/.htusers';
$zeile = "\n";
$pass = crypt($pw);
$fw = fopen($pfad, "a");
fputs($fw,$user.':'.$pass.$zeile);
fclose($fw); ?>
Falls jemand Sicherheitsbedenken diesbezgl. hat bitte bescheid sagen.
Thnx
Sokrates
Hi,
Falls jemand Sicherheitsbedenken diesbezgl. hat bitte bescheid sagen.
Kann man ohne den Rest des Codes nicht sagen.
Ich würde auf jeden Fall eine crypt-Version a la Dennis benutzen!
Gruß, Cybaer
Tag erstmal,
Kann man ohne den Rest des Codes nicht sagen.
Ich würde auf jeden Fall eine crypt-Version a la Dennis benutzen!
nur wegen der Portierbarkeit in andere Server-systeme oder haben die anderen Anweisungen weitere Vorteile. Ich habe eigentlich keinen Serverumzug mit der Seite in den nächten Jahren geplant und eine Windowsumgebung für den Server kommt sowieso auf keinen Fall in Frage.
Hi,
nur wegen der Portierbarkeit in andere Server-systeme
Ja.
Ich habe eigentlich keinen Serverumzug mit der Seite in den nächten Jahren geplant und eine Windowsumgebung für den Server kommt sowieso auf keinen Fall in Frage.
Das weiß man nie, ggf. kann man es auch nicht beeinflussen und wenn man etwas serverübergreifend machen kann, spricht ja auch nichts dagegen. :-)
Gruß, Cybaer
Hi,
<?php
$pfad = 'SERVERPFAD/.htusers';
$zeile = "\n";
$pass = crypt($pw);
$fw = fopen($pfad, "a");
fputs($fw,$user.':'.$pass.$zeile);
fclose($fw); ?>Falls jemand Sicherheitsbedenken diesbezgl. hat bitte bescheid sagen.
Was passiert, wenn für einen Usernamen mehrere Zeilen mit unterschiedlichen Paßwörtern existieren?
Du hängst ja einfach hinten an, egal ob schon eine Zeile für den User existiert.
Was passiert, wenn mehrere Requests zeitgleich geschehen und es beim Schreiben zu einem Durcheinander kommt? Du hast ja kein Locking eingesetzt ...
cu,
Andreas