[PHP] Custom php authentication linken naar .htaccess

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
Ik heb nu een script dat er voor zorgt dat ik kan inloggen.
Dit script kijkt in mijn .htpasswd file en contoleerd of alles oke is. Dit werkt goed, nu is het probleem dat ik dit script wil linken naar mijn .htaccess file. Dus dat als ik in een map een .htaccess file heb staan dat hij dan kijkt of ik al ingelogd ben via mijn eigen script.

De situatie nu is dat als ik ingelogd ben via mijn eigen script dat ik dan nog steeds zo'n popup schermpje krijg om in te loggen.

Hiet een link naar een soort gelijk script dat ik gebruik :

http://www.it-c.dk/course...Authentication/www/p9.php

Ik kan verder niets vinden op google en op het got ook al niet :'(
Kan iemand mijn helpen ?

Acties:
  • 0 Henk 'm!

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03 09:11
Kijk Hier eens naar.

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
Euh, dit is een popup. En ik had al gezegt dat ik geen popup wil.
Ik weet dat ik die info via de header kan sturen, maar dat is niet de manier. Of heb ik iets over mijn hoofd gezien ?

Maar is het niet mogelijk om $PHP_AUTH_USER en $PHP_AUTH_PW zo te verwerken dat ze samen werken met mijn script EN de .htaccess file ?

[ Voor 28% gewijzigd door DaMinD op 18-03-2003 09:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

DaMinD schreef op 18 March 2003 @ 09:01:
[knip]

Maar is het niet mogelijk om $PHP_AUTH_USER en $PHP_AUTH_PW zo te verwerken dat ze samen werken met mijn script EN de .htaccess file ?
Nope, maak dan gewoon een simpel scriptje met alleen php of is dat geen optie?

Over de vraag hoe je die popup weg krijgt:
dit script is niet getest, maar het zou moetten werken denk ik.
je kan ook inloggen op ftp's via ftp://username:password@ftpserver en dat werkt ook over http :)
Je kan de user ook laten inloggen via htacces door de url's via headers mee te geven.

login.php:
PHP:
1
2
3
4
5
6
7
8
9
//user geeft via een form de waarders $username en $password mee naar hier gepost

//de hash is een veiligere versie, omdat je ook woorden me codeerd is het moeilijker
//te hacken, want als iemand de md5 heeft IS het mogelijk om het te decoderen
//al is dat heel moeilijk.
$hash = md5("p@$s". $password ."w0rD-u$#r". $username ."n@m#");

header("Location: http://{$username}:{$hash}@www.jesite.nl/inloggen.php");
exit;


inloggen.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$username = "jeusername"; //de username, doh ;)
$password = "jepassword"; //passwordje

$goeiehash = md5("p@$s". $password ."w0rD-u$#r". $username ."n@m#");
if (($PHP_AUTH_USER==$username) && ($PHP_AUTH_PW==$goeiehash)) {
  //ja je bent goed ingelogged.
  //nu via header doorsturen naar een andere pagina, 
  //omdat je anders de url(dus password) krijgt te zien
  header("Location: http://www.jesite.nl/goedingelogd.php");
  exit;
} else {
  //foutive login.
  header("Location: http://www.jesite.nl/login.php");
  exit;
}


in goedingelogd.php en alle achterliggende php's moet je ook iedere keer kijken of auth user+password goed zijn(anders tiep je gewoon url en ben je binne), alleen nou heeft de browser de waardes al dus hoef je die niet meer me te sturen, dus die $PHP_AUTH_USER en $PHP_AUTO_PW blijven de waardes houden nadat je ze vulde via de header naar de url http://username:password@jesite

Doordat je gebruikmaakt van de header met de username+password slaan de browsers dat niet op, dus dan kunnen andere mensen ook die url(dus je password) nooit achterhalen(meen ik, 99% zeker).

Tevens zou ik gewoon de userdatabase met mysql maken, maar dat is aan jou hoe je dat vedder doet.

[ Voor 43% gewijzigd door Verwijderd op 18-03-2003 09:56 . Reden: layout verneukend + meer info. ]


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
Dankje KingOfDos
Ben nu bezig met je scriptje. Het enige probleem is dat ik het wachtwoord en de username uit de .htpasswd wil halen. Dit is opzich geen probleem aleen nu begint mijn scriptje raar te doen :(
Ik denk toch dat dit ook niet de oplossing is ;(
Jammer dat ik de $PHP_AUTH_USER en PW niet gewoon in kan stellen via een variable, want anders was het probleem opgelost denk ik.

Acties:
  • 0 Henk 'm!

Verwijderd

Mischien is dit een oplossing:
website structuur:
code:
1
2
3
4
5
jesite.com
|- login.php
|- dir: abc (deze heeft htpasswrd+htacces op zich, dus hij vraagt om password via popup)
    |- index.php
    |- index2.php


login.php
PHP:
1
2
3
4
5
6
if (isset($_GET['username']) && isset($_GET['password']) {
  header("Location: http://{$username}:{$password}@www.jesite.nl/abc"); 
  exit;
} else {
  //form dat username+pass verstuurd.
}


abc/index.php:
PHP:
1
header("Location: http://www.jesite.com/abc/index2.php");


Dit script haalt dus username+password op naar je htacces+password toe, door de url heen, en wordt tevens niet gecached(als het goed is), als je dan de user+pass goed hebt dan mag je de dir binnen en dan open je index.php, die verstuurd je weer door naar index2.php.
Mischien bied dit goeie uitkomst.

Waarom wil je met de htacces werken als ik vragen mag? Waarom niet volledig php of met mysql? is toch even veilig(behalve voor plaatjes dan, ja oké).

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
waarom die index.php -> index2.php :?

Acties:
  • 0 Henk 'm!

  • Glock
  • Registratie: November 2001
  • Niet online
M4rt1nvW schreef op 18 March 2003 @ 17:56:
waarom die index.php -> index2.php :?
Omdat anders de link in je adress bar blijft staan...

Vind het trouwens raar dat je het zo doet, je moet pass en user sturen naar gebruiker, erg lekgevoelig naar mijn idee. Ik zou als ik jou was PHP alles laten afhandelen...

Edit:
M4rt1nvW schreef op 18 March 2003 @ 18:36:
jah, nu in je history :?

Het is zo ie zo onverstandig om hett zo te willen *NOFI*
Ben ik het dus helemaal mee eens.

[ Voor 25% gewijzigd door Glock op 18-03-2003 20:11 ]


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
jah, nu in je history :?

Het is zo ie zo onverstandig om hett zo te willen *NOFI*

[ Voor 4% gewijzigd door martinvw op 18-03-2003 19:16 . Reden: spelvout ]


Acties:
  • 0 Henk 'm!

Verwijderd

M4rt1nvW schreef op 18 March 2003 @ 18:36:
jah, nu in je history :?

Het is zo ie zo onverstandig om hett zo te willen *NOFI*
1) Als het goed is cached hij hem niet omdat de url geen info bevat als een nieuwe header, cached hij hem toch dan gewoon pragma: no-cache en meer no-cache headers.

2) Ik vind het ook niet het beste systeem, maar veilig is het wel als die url niet gecached is, want je kan niet om die popup heen voor die files. Daarom aparte dir ;)

3) Geef mij maar een goed sessie systeem, maar de topicstarter vraagt hier de oplossing me, dan krijgt hij die.

Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?PHP
session_start();
if($var1 == var1) {
//   $goeiehash = md5("p@$s". $enc_pw ."w0rD-u$#r". $valid_user ."n@m#"); 
     if (($PHP_AUTH_USER==$user_name) && ($PHP_AUTH_PW==$password)) { 
        header("Location: http://www.jesite.nl/protected/"); 
     exit;
     } else { 
       echo "Login niet gelukt !";
       exit;}
} else {
    
$var1=lol;
if($name && $pass) {

  $auth=false;
  $filename = '.htpasswd'; 
  $fp = fopen( $filename, 'r' ); 
  $file_contents = fread( $fp, filesize( $filename ) ); 
  fclose( $fp ); 
  $lines = explode ( "\n", $file_contents ); 
  foreach ( $lines as $line ) { 
     list( $username, $password ) = explode( ':', $line ); 
     if ($username == $name ) { 
        $salt = substr( $password , 0 , 2 ); 
        $enc_pw = crypt( $pass, $salt ); 
        if ( $password == $enc_pw ) { 
           $auth = true;
           break;
        } } }
   if ($auth) {
     $valid_user = $name;
     session_register("valid_user");
   }}

if (session_is_registered("valid_user")) {
header("Location: http://{$username}:{$password}@www.jesite.nl/login.php?
var1=var1&valid_user=$username&password=$password"); 
exit;   
}
else {
   if (isset($name)) {
      echo "Sorry, could not log you in."; }
   else {
      echo "Niet in het systeem :(.";}
     ?>
       <form action="<?echo $PHP_SELF?>" method=post>
       Username<input type=text size=10 name=name>
       Password<input type=password size=10 name=pass>
       <input type=submit value="Login">
<?php
 }}
?>      


Dit is het nu. werkt nog niet :/
Het is voor mijn systeem belangrijk dat ik de hele map kan beveiligen en dan is via een .htaccess file de enige manier. (In map moeten data files, documenten en klant gegevens komen te staan en die moeten ze zelf aan kunnen passen.

Het probleem met het hier boven staande script is dat $PHP_AUTH_USER en $PHP_AUTH_PW leeg zijn :? . Dus ik kan niet inloggen op mij beveiligde map.

Maar als iemand een nog beter systeem weet ....

[ Voor 8% gewijzigd door DaMinD op 19-03-2003 15:41 . Reden: ff layout aanpassen :) ]


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
Heb net even gestest.

En JA de url komt in je history te staan !
Jammer, dan werkt dit system toch nier :/

Acties:
  • 0 Henk 'm!

Verwijderd

Mischien helpt dit:
PHP:
1
2
3
Header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); //no cach, no store, etc.
Header("Expires: Sun, 26 May 1985 12:52:34 GMT"); //the date of creation of the image
Header("Pragma: no-cache"); //Don't save the image

Dit voorkomt dat het gecached wordt, mischien werkt het.

Voor de 3e keer:
Waarom percee de htaccess?

Acties:
  • 0 Henk 'm!

Verwijderd

Header("Expires: Sun, 26 May 1985 12:52:34 GMT"); //the date of creation of the image
waarom deze datum?

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
omdat, hij dan zodra een er een verzoek wordt gedaan en het blijkt dat het nu later is de expires dan moet hij opnieuw geladen wordne.

Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
En hier dan nog een keer:

Ik wil een hele map beveiligen. In deze map staan bestanden die niemand anders mag zien of mag downloaden.

Heb het scriptje voor de non cache uit geprobeerd. Helaas werkt het niet :/

[ Voor 23% gewijzigd door DaMinD op 19-03-2003 15:31 . Reden: Script uit geprobeerd ]


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
Helaas, het werkt niet zo als ik allemaal wil.

Ik ga nu maar eens kijken hoe ik het voor elkaar krijg mijn web protal om te bouwen voor een sql db. (wordt nog een hele klus)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je hebt heus geen sql-db nodig voor de authenticatie als je enkel alleen de .htaccess niet naar believen kan gebruiken hoor...

Simpelweg wat authenticatie code includen in je php-scripts die dat nodig hebben is voldoende en die authenticatie code heb je blijkbaar al.

[ Voor 10% gewijzigd door ACM op 19-03-2003 16:03 ]


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
Ja die heb ik ook al. Maar het probleem is dat die niet goed werkt.

Het doorsturen van de url met het ww en de user werkt op zich wel maar je moet eerst handmatig nog een keer de url op geven ander doet hij het niet :S
Een beetje een rare fout maar het is nu eenmaals zo. Ik heb deze code op een XP en 2K systeem uit geprobeerd en het heeft bijna het zelfde effect. Alleen bij het 2K systeem wil hij het ww en de user helemaal niet gebruiken. (Maar wel doorsturen)

Ik dacht dat ik zo simpel ff een script in elkaar zou kunnen proppen maar dat is dus flink tegen gevallen.

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
en als je nou gewoon de .htaccess laat vervallen en een los scriptje maakt wat kijkt of er in de huidige dir op de server een bepaald bestand staat, en aan de hand van de inhoud van dit bestand of aan de hand van de naam van het bestand gekoppeld aan een dbaseje kijkt of de gebruiker in deze dir mag komen???

Dus vb.
je zet in de dir het bestand "toegang" neer
dan zet je in je scriptje :
[code]
als (bestaat(huidige dir\toegang)) dan
{
als gebruiker = authorised
}
anders
{
die("geen toegang")
}

Edit : En je gooit in apache het recht om dirs te bekijken voor je hele site uit.

[ Voor 10% gewijzigd door Gomez12 op 19-03-2003 16:56 ]


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024
Leuk bedacht.
Het probleem is dat je dan als je de map weet, gewoon de inhoud kun bekijken en downloaden.
En dat is dus niet de bedoeling met berdrijf gegevens :|

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 19 maart 2003 @ 14:04:
Header("Expires: Sun, 26 May 1985 12:52:34 GMT"); //the date of creation of the image
waarom deze datum?
Of de zondag klopt weet ik niet, maar zie mijn profile ;)
mn geboortedatum

Als hij die url van mij blijft cachen dan weet ik het ook niet meer, het wat wel te proberen. Als ik jou was zou ik gewoon die popup laten ofzo, toch goed zat?

Acties:
  • 0 Henk 'm!

  • Glock
  • Registratie: November 2001
  • Niet online
of gewoon uberhaupt alle access tot de dir weigeren en een php scriptje de login controleren en bestanden bv 'downloadbaar' maken dmv een fpassthrough of dergelijke

Dit lijkt mij een veel praktischere oplossing als waar je nu mee bezig bent.

[edit]
Een md5 hash is ook altijd 32 bits
*ahum, je bedoeld 32 characters :P hij is 128 bits ;)

[ Voor 22% gewijzigd door Glock op 19-03-2003 18:53 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Glock schreef op 19 March 2003 @ 18:05:
of gewoon uberhaupt alle access tot de dir weigeren en een php scriptje de login controleren en bestanden bv 'downloadbaar' maken dmv een fpassthrough of dergelijke

Dit lijkt mij een veel praktischere oplossing als waar je nu mee bezig bent.
ja dit kan natuurlijk ook, dan moet hij een filebrouser maken en alle files in een dir alla asd, in de asd moet je een .htacces hebben die er zo uit ziet:
code:
1
deny from all

dan is het niet mogelijk om de files uit te lezen, php kan dit weer wel doen.

met fpassthrough heb ik zelf 1 klein probleempje(met meedere commands, alla system enzo), mijn hosting heeft deze voor de veiligheid uitgeschakeld, dus nou gebruik ik ipv fpassthrough maar echo en goeie headers :z

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 18 March 2003 @ 09:46:
[...]
de hash is een veiligere versie, omdat je ook woorden me codeerd is het moeilijker te hacken, want als iemand de md5 heeft IS het mogelijk om het te decoderen al is dat heel moeilijk.
md5 is geen codering of encryptie, het is een hash. Tijdens het hashen gaat de originele tekst verloren en daarom is het ook niet mogelijk om dit terug te draaien.
Een md5 hash is ook altijd 32 bits, meer of minder tekst, hij wordt niet langer of korter. Daarom gebruiken veel fileshare programma's het om bestanden met elkaar te vergelijken. Zou een hash terug te draaien zijn, dan zou je uit 32 bits een bestand van honderden mb's kunnen toveren ;)
Pagina: 1