HTTP Basic a Digest autentizace pomocí PHP

bimbo

HTTP Basic a Digest autentizace pomocí PHP
« kdy: 18. 05. 2016, 10:33:27 »
Zdravím.
Nějak to nechapu.
https://evertpot.com/223/

Kód: [Vybrat]
<?php

$username 
null;
$password null;

// mod_php
if (isset($_SERVER['PHP_AUTH_USER'])) {
    
$username $_SERVER['PHP_AUTH_USER'];
    
$password $_SERVER['PHP_AUTH_PW'];

// most other servers
} elseif (isset($_SERVER['HTTP_AUTHORIZATION'])) {

        if (
strpos(strtolower($_SERVER['HTTP_AUTHORIZATION']),'basic')===0)
          list(
$username,$password) = explode(':',base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

}

if (
is_null($username)) {

    
header('WWW-Authenticate: Basic realm="My Realm"');
    
header('HTTP/1.0 401 Unauthorized');
    echo 
'Text to send if user hits Cancel button';

    die();

} else {
    echo 
"<p>Hello {$username}.</p>";
    echo 
"<p>You entered {$password} as your password.</p>";
}

?>

Fungovat to funguje
Sežere to
username = username
password  = password

Jak však nastavím vlastní heslo?


Re:HTTP Basic a Digest autentizace pomocí PHP
« Odpověď #1 kdy: 18. 05. 2016, 11:34:32 »
No tak tam se nikde netestuje, jaké má to heslo s loginem být. Takže to sežere cokoli, ne jenom username-password.
Ten poslední else tam nemá co dělat, místo něj tam musí být něco jako if ($username=="...." && $password=="...") { ... }
Nebo pokud chceš dovolit jen jedinou kombinaci jména a hesla, tak if ($username!="...." || $password!="...") die();

Re:HTTP Basic a Digest autentizace pomocí PHP
« Odpověď #2 kdy: 18. 05. 2016, 11:37:24 »
Jinak to je podle mě úplně zbytečně překombinované.
Stačí tohle:

Kód: [Vybrat]
<?php
   
if ($_SERVER['PHP_AUTH_USER']!="login" || $_SERVER['PHP_AUTH_PW']!="heslo")
   {
       
header("WWW-Authenticate: Basic realm=\"My Realm\"");
       
header("HTTP/1.0 401 Unauthorized");
       die(
"Authentization required\n");
   }

   
// ... a tady už normálně skript, sem se to dostane jen po úspěšné autentizaci
?>


bimbo

Re:HTTP Basic a Digest autentizace pomocí PHP
« Odpověď #3 kdy: 18. 05. 2016, 14:47:05 »
Děkují moc  ;)