Advertisement
raylinanthony

Untitled

Jan 28th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.17 KB | None | 0 0
  1.  
  2. $dominio = 'Danilo Medina';
  3.  
  4. // usuario => contraseña
  5. $users = array('d2016' => '123');
  6.  
  7.  
  8. if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
  9.     header('HTTP/1.1 401 Unauthorized');
  10.     header('WWW-Authenticate: Digest realm="'.$dominio.
  11.            '",qop="auth",nonce="'.uniqid().'",opaque="'.md5($dominio).'"');
  12.  
  13.     die('Denied Access.');
  14. }
  15.  
  16. // Función para analizar la cabecera de autenticación HTTP
  17. function analizar_http_digest($txt)
  18. {
  19.     // Protección contra datos ausentes
  20.     $partes_necesarias = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
  21.     $datos = array();
  22.     $claves = implode('|', array_keys($partes_necesarias));
  23.  
  24.     preg_match_all('@(' . $claves . ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $coincidencias, PREG_SET_ORDER);
  25.  
  26.     foreach ($coincidencias as $c) {
  27.         $datos[$c[1]] = $c[3] ? $c[3] : $c[4];
  28.         unset($partes_necesarias[$c[1]]);
  29.     }
  30.  
  31.     return $partes_necesarias ? false : $datos;
  32. }
  33.  
  34.  
  35. // Analizar la variable PHP_AUTH_DIGEST
  36. if (!($_data = analizar_http_digest($_SERVER['PHP_AUTH_DIGEST'])) ||
  37.     !isset($users[$_data['username']]))
  38.     die('User or Pass Incorrect!');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement