Avatar billede mr_bacardi Nybegynder
21. januar 2004 - 22:21 Der er 11 kommentarer og
1 løsning

htpasswd.exe (apache windows) krypter PHP

Hej
Jeg har i et stykke tid nu kørt med htaccess på min workstation (windows XP), men nu er det begyndt og blive ofte der er andre end mig selv som skal se nogen ting der på. Dette giver problem med at de skal have et brugernavn og password, jeg har bare været gået ind i min .htpasswd fil og tilføjet:
guest:
da jeg ikke gider ind og kryptere m.m., men dette er jo bestemt ikke effektivt hvis der er flere og flere som nogen gange skal have adgang...
Jeg vil derfor lave en side så jeg kan styre min .htpasswd fil via en PHP side, og på den måde give folk brugernavn og password.
Nu kommer mit problem så:
På linux/unix kan man bruge:
$krypPasswd = crypt("$passwd",base64_encode("$passwd"));
og så er det krypteret, men da apache på windows ikke benytter den samme form for kryptering skal jeg bruge en exe fil der følger med apache (htpasswd.exe), denne skal køres fra en Command Prompt og der er en del muligheder for at kryptere, jeg har indtil videre bare brugt standard på windows (ifølge den: MD5) men en kryptering af kommandoen:
htpasswd -c test.txt admin
og passwordet: test
giver outputtet:
admin:$apr1$bX5.....$N8ZOpOPnEfmdZxZfq3iZI.
Altså passwordet er krypteret:
$apr1$bX5.....$N8ZOpOPnEfmdZxZfq3iZI.

Nu skulle man tro at en md5() i PHP ville give det samme, men det giver:
098f6bcd4621d373cade4e832627b4f6
Men da jeg har fundet ud af den bruger crypt() bliver det næste påfund crypt($pw,md5($pw)) hvilket giver:
09al6vNID5onY
Efter et kig på php.net/crypt kan man se md5 bruges sådan her:
crypt($pw,CRYPT_MD5);
men det giver:
1$MDgPcadkr82

Jeg er nu løbet tør for idéer og håber der er nogen som har læst mit rimlig lange spørgsmål igennem og kan svare på hvordan jeg får krypteret det med PHP?
Hvis det ikke kan lade sig gøre - er der så en anden måde hvor på jeg kan styre brugerne?
Avatar billede billen Nybegynder
21. januar 2004 - 22:32 #1
Hvorfor kunne du ikke bare fortsætte med at bruge htpasswd.exe og kalde den fra php via exec() kald?
Avatar billede mr_bacardi Nybegynder
21. januar 2004 - 22:34 #2
Har ikke tidligere prøvet og køre exe filer, men har hørt det skulle være rimlig besværligt og give mange problemer, men du har måske gode erfaringer med det?
Avatar billede billen Nybegynder
21. januar 2004 - 22:36 #3
nej, kun fra linux ;o) Undersøger lige nogle andre muligheder
Avatar billede billen Nybegynder
21. januar 2004 - 22:39 #4
Avatar billede billen Nybegynder
21. januar 2004 - 22:40 #5
Har ikke efterprøvet det
Avatar billede billen Nybegynder
21. januar 2004 - 22:40 #6
argh... det virker ikke på windows :(
Avatar billede mr_bacardi Nybegynder
21. januar 2004 - 22:41 #7
Nemlig, har prøvet det.. Og det står der også
Avatar billede mr_bacardi Nybegynder
21. januar 2004 - 23:01 #8
Jeg kiggede lige lidt på exec og det ser ikke så svært ud, følgende retunerer et krypteret password:
$krypteret = exec("htpasswd -nb ".$bruger." ".$pw."");
$krypteret=str_replace($bruger.":", "", $krypteret);

Men nu har jeg lige lagt mærke til noget: Når jeg krypterer det samme password flere gange giver det forskellige resultater, fx giver:
brugernavn: admin
password: test
Følgende output hvor det er det samme jeg krypterer igen og igen:
admin:$apr1$wk/.....$OGsDBWqtwsUBJstsNwMye0
admin:$apr1$4n/.....$QluBOMudxFZWUxL7ksgJq1
admin:$apr1$kn/.....$FoF7L9iQ8vpm7gOezIxMF1
admin:$apr1$Bo/.....$fS3GU5.BWLwqGQhAFEth..

og det bliver ved med at ændre sig.. Hvorfor gør den det?
Kan den tjekke om et password er korrekt hvis det er forskelligt fra gang til gang når den krypterer? :S
Avatar billede mr_bacardi Nybegynder
21. januar 2004 - 23:06 #9
Nu skal jeg vist i seng, kan jeg jo bare tjekke.. Fik lige en anden til det da jeg selv har adgang med min IP uden og skulle skrive password, og ja det kan den sørme.. Takker for idéen til at bruge exec, smid lige et svar så du kan få pointne, og kan du evt. svare på hvorfor den kan finde ud af det med flere forskellige password-krypteringer?
Avatar billede billen Nybegynder
21. januar 2004 - 23:12 #10
Jeg er lige i gang med at undersøge det med forskellige krypteringer.
Avatar billede billen Nybegynder
21. januar 2004 - 23:21 #11
Jeg kan se at det fungerer med de forskellige krypteringer. Jeg kan ikke rigtig give dig et svar, men et gør det.
Avatar billede mr_bacardi Nybegynder
22. januar 2004 - 06:22 #12
Den må jo kryptere passwordet flere gange og tjekke det, måske en form for ekstra sikkerhed.. I hvert fald virker det og du skal have tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporter til lokal IT Korsør

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operations Center ved Cyberdivisionen

BEC Financial Technologies

Business Continuity Manager - Technical