>백엔드 개발 >PHP 튜토리얼 >PHP 다이제스트 인증

PHP 다이제스트 인증

WBOY
WBOY원래의
2016-07-29 09:15:151367검색

설명에 따르면

A1=MD5(::)

A2=MD5( < ;request-methd>:)

최종 결과: MD5(MD5(A1)::: : MD5(A2))

위 줄의 MD5(A1) 및 MD5(A2)에 문제가 있습니다. 브라우저는 MD5(A1::<를 구현합니다. ;cnonce> ::A2)

$realm='saberyjs';
$password='0011';//데이터베이스를 쿼리하는 방법은 다음과 같습니다. 단지 테스트하기에 편리할 뿐입니다;
if(!isset($_SERVER['PHP_AUTH_DIGEST']))
{
$n> header("www-authenticate:Digest realm ='".$realm ."', nonce='".$nonce."',algorithm='md5',qop='auth'");
header("HTTP/1.0 401 권한 부여 필요");
종료() ;
}
else
{
//echo 'sset';
//echo $_SERVER['PHP_AUTH_DIGEST'];
$result=parse_auth_digest($_SERVER['PHP_AUTH_ DIGEST']);
//var_dump($result);
//echo hexdec($result['nc']);
//exit();
if((int) $결과['nc']>1)
                                                                                       > 🎜>           헤더("HTTP/ 1.0 401 승인 취소 필요");
             exit(); > }
          $A1=md5($result['username'].":".$result['realm'].":".$password );
                           ['사용자 이름'].':'.$result['realm'].':'.$password).':'.$result['nonce'].':'.$result[ 'cnonce'];
$A2=md5($_SERVER['REQUEST_METHOD'].":".$result['uri']);
$degest=md5($A1.":".$ 결과['nonce' ].':'.$result['nc'].':'.$result['cnonce'].':'.$result['qop'].':'.$A2) ;
/ / var_dump ($degest) }
else
{
echo '성공';
}
}


함수 parse_auth_digest($ auth_digest)
{
$pairs=array ();
preg_match_all('/(w+)=['"]?([/a-z0-9A-Z.]+)['"] ?/i',$auth_digest,$result,PREG_SET_ORDER) ;
foreach($result as $value)
$pairs[$value[1]]=$value[2];
//var_dump ($pairs);
$pairs 반환;
}
 
?>




위의 내용은 PHP 다이제스트 인증을 소개하며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.