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/

<?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:


<?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  ;)