Thread View: pl.comp.www.server-side
2 messages
2 total messages
Started by RM
Thu, 30 Apr 2020 01:57
problem z logowaniem mimo poprawnego pliku .htpass
Author: RM
Date: Thu, 30 Apr 2020 01:57
Date: Thu, 30 Apr 2020 01:57
78 lines
3104 bytes
3104 bytes
Mam prawdopodobnie problem z plikiem .htpass utworzonym przez program
htpasswd.
Użytkownik Robert może się zalogować z hasłem hasło_Roberta, a
użytkownik Adam z hasłem hasło_Adama nie.
Tzn. mam:
$ head ~robert/public_html/.htaccess
#v+
AuthUserFile "/home/robert/resources/.htpass"
AuthName "Strony zabezpieczone"
AuthType Basic
require valid-user
$ cat ~robert/resources/.htpass
Adam:$apr1$SBuOrH52$npHXYtgKVDJMaq6vR3PKT1
Robert:$apr1$bBUEgXpC$oqJ05771CIL3VXhPDz8nK.
$ htpasswd -v ~robert/resources/.htpass Robert
Enter password:hasło_Robeta
Password for user Robert correct.
$ htpasswd -v ~robert/resources/.htpass Adam
Enter password: hasło_Adama
Password for user Adam correct.
$ ls -la ~robert/resources/.htpass
-rw-rw-r-- 1 robert www-data 176 kwi 29 22:25 .htpass
$ cat ~robert/public_html/strona.php
...
function authenticate() {
if (!isset($_SERVER['PHP_AUTH_PW'])) {
// wyświetl okienko:
header('HTTP/1.0 401 Authorization Required');
header("WWW-Authenticate: Basic realm=Logowanie do systemu");
exit;
}
$currentAdmin = ... // wpisany login, 'Adam' albo 'Robert'
$users =array('Adam', 'Robert');
$passwords = array('hasło_Adama', 'hasło_Roberta');
if (!isset($_SERVER['PHP_AUTH_PW']) ||
$passwords[array_search($currentAdmin, $users)] !=
$_SERVER['PHP_AUTH_PW'] ||
!in_array($currentAdmin, $users)) { // złe hasło
header("WWW-Authenticate: Basic realm=Logowanie do systemu");
header("HTTP/1.0 401 Unauthorized");
echo '*** Niepowodzenie logowania ***';
return FALSE;
} else { // dobre hasło
...
}
return TRUE; // zalogowany
}
...
$ lynx localhost/~robert/strona.php
Username for 'Strony zabezpieczone' at server 'localhost':Robert
Password:hasło_Roberta
POPRAWNIE POKAZUJE WITRYNĘ
$ lynx localhost/~robert/strona.php
Username for 'Strony zabezpieczone' at server 'localhost':Adam
Password:hasło_Adama
POKAZUJE SIĘ: *** Niepowodzenie logowania ***
Nie wiem dlaczego tak się dzieje. Programu htpasswd użyłem zgodnie z
dokumentacją man. Proszę o pomoc.
Re: problem z logowaniem mimo poprawnego pliku .htpass
Author: PawelS pawel(at)wbcd(dot)pl
Date: Thu, 30 Apr 2020 17:30
Date: Thu, 30 Apr 2020 17:30
88 lines
4058 bytes
4058 bytes
RM pisze:
> Mam prawdopodobnie problem z plikiem .htpass utworzonym przez program
> htpasswd.
>
> Użytkownik Robert może się zalogować z hasłem hasło_Roberta, a
> użytkownik Adam z hasłem hasło_Adama nie.
>
> Tzn. mam:
>
> $ head ~robert/public_html/.htaccess
> #v+
> AuthUserFile "/home/robert/resources/.htpass"
> AuthName "Strony zabezpieczone"
> AuthType Basic
> require valid-user
>
> $ cat ~robert/resources/.htpass
> Adam:$apr1$SBuOrH52$npHXYtgKVDJMaq6vR3PKT1
> Robert:$apr1$bBUEgXpC$oqJ05771CIL3VXhPDz8nK.
>
> $ htpasswd -v ~robert/resources/.htpass Robert
> Enter password:hasło_Robeta
> Password for user Robert correct.
>
> $ htpasswd -v ~robert/resources/.htpass Adam
> Enter password: hasło_Adama
> Password for user Adam correct.
Ta opcja "-v" ma zweryfikować hasło ?
> $ ls -la ~robert/resources/.htpass
> -rw-rw-r-- 1 robert www-data 176 kwi 29 22:25 .htpass
>
> $ cat ~robert/public_html/strona.php
>
> ...
>
> function authenticate() {
> if (!isset($_SERVER['PHP_AUTH_PW'])) {
> // wyświetl okienko:
> header('HTTP/1.0 401 Authorization Required');
> header("WWW-Authenticate: Basic realm=Logowanie do systemu");
> exit;
> }
> $currentAdmin = ... // wpisany login, 'Adam' albo 'Robert'
> $users =array('Adam', 'Robert');
> $passwords = array('hasło_Adama', 'hasło_Roberta');
> if (!isset($_SERVER['PHP_AUTH_PW']) ||
> $passwords[array_search($currentAdmin, $users)] !=
> $_SERVER['PHP_AUTH_PW'] ||
> !in_array($currentAdmin, $users)) { // złe hasło
> header("WWW-Authenticate: Basic realm=Logowanie do systemu");
> header("HTTP/1.0 401 Unauthorized");
> echo '*** Niepowodzenie logowania ***';
> return FALSE;
> } else { // dobre hasło
>
> ...
>
> }
> return TRUE; // zalogowany
> }
Jeśli dobrze rozumiem powyższy kod, to sam sprawdzasz poprawność hasła ?
To może problemem jest ta linia:
> $currentAdmin = ... // wpisany login, 'Adam' albo 'Robert'
Tu powyżej masz wpisany tylko jeden login,
a próbujesz zalogować się dwa razy,
używając jednego a potem drugiego loginu.
Tutaj poniżej też widzę nie poprawną konstrukcję
> $users =array('Adam', 'Robert');
> $passwords = array('hasło_Adama', 'hasło_Roberta');
To bardzo niebezpieczny zapis, kiedy indeksy przestaną być zbieżne,
hasła będą przypisane do innych loginów.
Nie lepiej zapisać to tak: ?
$USERPASS =array('Adam'=>'hasło_Adama', 'Robert'=>'hasło_Roberta');
Poza tym naprawdę używasz polskich liter w haśle ?
może gdybyś zamiast 'hasło_Adama' zastosował:
'hasło_Huberta'
'hasło_Roberta'
może problem jest z polskimi literami i kodowanie (tak tylko wymyślam) ?
Przede wszystkim najpierw wyłączył bym własne sprawdzanie hasła.
W pierwszej kolejności sprawdziłbym czy w apache wywołanie
pliku / strony np: index.html działa.
W drugiej kolejności próbowałbym ze skryptem.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads