HTaccess en leestekens in gebruikersnaam
Ik wil een map beveiligen met htaccess. Nu heeft één van de gebruikers een naam waar leestekens voor gebruikt wordt. Om in te kunnen loggen heb ik een ë nodig. Dat wordt niet standaard geaccepteerd door htaccess. (bij mij niet)
Nu kan ik de gebruiker natuurlijk een andere gebruikersnaam opleggen maar dat vind ik een slecht idee. Blijven er 2 mogelijkheden over, kijken of ik naam en wachtwoord via php in htaccess kan invoeren (hulp a.u.b.) of uitvinden hoe ik het voor elkaar kan krijgen dat de ë in de gebruikersnaam wordt omgezet in een e (achter de schermen) bij htaccess.
Als iemand een oplossing weet, help me a.u.b.
m.v.g.
Peter
Als ik een snelle blik neem in de RFC van HTTP Authorization heb ik mijn twijfels of het inderdaad kan.
Beide zijn ëndüser
ëndüser:$2y$10$nZTl7QatBc49tcmzNPPj.urIhYKrgoiubgod2SCqXzLBXPLN3AdJ.
https://hostingcanada.org/htpasswd-generator/
Gebruik Bcrypt in Mode menu
Groet
Als je de beschikking hebt over een scriptingtaal en/of database zou je deze functionaliteit hier ook in kunnen trekken en zou je een kleine beheerapplicatie kunnen schrijven zodat je niet hoeft lopen te pielen met speciale tekens in een tekstbestand.
Groet.
Code (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
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
<?php
$extraLogins = array(
array(
'pw'=>'***',
'contacts'=>array(
'[email protected]',
'0123456789'
),
'naam'=>'Paul',
'id'=>-1,
'rollen'=>array(VIERHOEK)
),
array(
'pw'=>'guest',
'contacts'=>array(
'[email protected]'
),
'naam'=>'guest',
'id'=>-2,
'rollen'=>array(TOERNOOIEN)
)
);
//kleine controle of de id's goed zijn.
foreach($extraLogins as $login) {
if(!isset($login['id'], $login['naam'], $login['pw'], $login['contacts'], $login['rollen']) || $login['id']>=0 && is_array($login['contacts']) && is_array($login['rollen'])) {
die('<h1>Er zijn fouten in de extra logins</h1>');
}
}
$bfound=false;
foreach($extraLogins as $login) {
if($login['pw']==$_POST['pw'] && in_array($_POST['name'], $login['contacts'])) {
if(in_array(functiecode(), $login['rollen'])) {
$_SESSION['id'] = $login['id'];
$_SESSION['naam'] = $login['naam'];
$_SESSION['email'] = $login['contacts'];
$_SESSION['rollen'] = $login['rollen'];
$_SESSION['check'] = md5(date('d-m-Y'));
header('location:logedin.php');
exit;
}
}
}
?>
$extraLogins = array(
array(
'pw'=>'***',
'contacts'=>array(
'[email protected]',
'0123456789'
),
'naam'=>'Paul',
'id'=>-1,
'rollen'=>array(VIERHOEK)
),
array(
'pw'=>'guest',
'contacts'=>array(
'[email protected]'
),
'naam'=>'guest',
'id'=>-2,
'rollen'=>array(TOERNOOIEN)
)
);
//kleine controle of de id's goed zijn.
foreach($extraLogins as $login) {
if(!isset($login['id'], $login['naam'], $login['pw'], $login['contacts'], $login['rollen']) || $login['id']>=0 && is_array($login['contacts']) && is_array($login['rollen'])) {
die('<h1>Er zijn fouten in de extra logins</h1>');
}
}
$bfound=false;
foreach($extraLogins as $login) {
if($login['pw']==$_POST['pw'] && in_array($_POST['name'], $login['contacts'])) {
if(in_array(functiecode(), $login['rollen'])) {
$_SESSION['id'] = $login['id'];
$_SESSION['naam'] = $login['naam'];
$_SESSION['email'] = $login['contacts'];
$_SESSION['rollen'] = $login['rollen'];
$_SESSION['check'] = md5(date('d-m-Y'));
header('location:logedin.php');
exit;
}
}
}
?>
Zo doe ik het voor werken zonder database of zelfs gedeeltelijk db en deel zonder. De rollen zijn waar mag men wel of niet inloggen.
Jan
Als je die voor iemand aan past dan moet diegene eerst zijn sessie trashen. Ook de naam en mailadres hebben geen meerwaarde in een sessie. Die kan je prima uit de database halen.
Verder kan je ook session_regenerate_id() toepassen na het inloggen. Dat voorkomt dat iemand van te voren je sessieID al op slinkse wijze kan stelen (session fixation) en past de SessieID aan.
Verder kan je zo'n inlog ook gebruik laten maken van HTTP Authenticatie om hetzelfde gevoel te krijgen als eerst.
https://www.php.net/manual/en/features.http-auth.php
Gewijzigd op 15/11/2020 09:25:55 door - Ariën -
- Ariën - op 15/11/2020 09:23:45:
op slinkse wijze kan stelen (session fixation)
Ik denk dat je session hijacking bedoelt, wat mogelijk (mede) in staat gesteld wordt door session fixation?
Gewijzigd op 16/11/2020 16:58:32 door Thomas van den Heuvel
Alvast bedankt. Ik laat nog weten of het me gelukt is.
Jouw verhaal lijkt me een andere manier van een map beveiligen met PHP. Wellicht beter maar voor mij op dit moment lastig omdat ik dan veel tekst moet wijzigen in bestaande scripts.
Ik zoek nu dus een mogelijkheid om met php in te loggen bij HTacces.
Maar de bekende inlog-vensters zijn gewoon een onderdeel van de webservers. Zie mijn post hierboven.
Je zou het .htaccess bestand mogelijk zelfs (inhoudelijk) kunnen beheren via PHP, maar als je dat dan toch aan het doen bent kun je net zo goed een database gebruiken.
Stel ik heb een gebruiker Piet met wachtwoord ikbenSl1m. Dat wachtwoord is versleuteld maar Piet moet dus ikbenSl1m invoeren. Nu heeft Piet zich aangemeld en wil ik Piet toestemming geven in de met HTacces beveiligde map poenbeheer. Op dit moment krijg ik het dus niet voor elkaar dat Piet niet nog een keer zijn naam en wachtwoord moet invoeren.
Piet heet in het echt Piët maar logt dan in als Piet zonder dat Piët dat merkt.
Mijn probleem is dan dat inlog vraag venster bij HTacces. Daar wil ik vooraf gegevens naar toe sturen zodat er zonder extra inloggen, gewerkt kan worden in poenbeheer.
Je moet dus bij het wijzigen van een wachtwoord een hoop toeren uithalen om dit te bewerkstelligen. Ook de gebruiker wil erg graag deze mogelijkheid hebben. Ook het uitloggen is niet eenvoudiger te doen dan enkel de browser af te sluiten.
Met welke reden gebruik je .htaccess, en geen normaal inlogscript in PHP & MySQL?
http://www.sitemasters.be/tutorials/1/1/99/PHP/Maak_een_login_script. Kijken of ik daarmee kan doen wat ik zoek.
Bedankt voor het meedenken.
Ariën, onbekenheid met die beveiliging en mijn ervaring met HTacces. Ik ga het nu met jouw advies proberen met de kennis van Bedankt voor het meedenken.
Het enige wat een cookie moet bevatten is een UserID en een SessieHash die niet afleidbaar is van een wachtwoord, ook al is deze gehashed.
Gewijzigd op 11/12/2020 15:30:51 door - Ariën -