2016-03-31 12 views
0

を失敗した私は、PHPで簡単なathenticationを設定しようとしています:のphp-認証は常に

<?php 

if ($PHP_AUTH_USER != "a" or $PHP_AUTH_PW != "b"): 

header('WWW-Authenticate: Basic realm="Protected Page: ' . 
    'Enter your username and password for access."'); 
header("HTTP/1.0 401 Unauthorized"); 
?> 
    <HTML> 
    <HEAD><TITLE>Authorization Failed</TITLE></HEAD> 
    <BODY><H1>Authorization Failed</H1></BODY> 
    </HTML> 
<?php else: ?> 
    <HTML> 
    <HEAD><TITLE>Authorization success</TITLE></HEAD> 
    <BODY><H1>Authorization success</H1></BODY> 
    </HTML> 
<?php endif; ?> 

ユーザ名/ passswordダイアログが表示されますが、私は、ユーザー名とパスワードとして、AとBを入力すると、ダイアログが閉じ、もう一度ポップアップします。

私はapache2.4を実行していますが、設定が問題である可能性がありますか?どのような追加情報を提供する必要がありますか?

答えて

1

問題は、資格情報をチェックする行にある:

if ($PHP_AUTH_USER != "a" or $PHP_AUTH_PW != "b"): 

あなたが探している値が$_SERVERスーパーグローバルに格納されています。だから、行は次のようになります。パスワードが平文で保存されているよう

if ($_SERVER['PHP_AUTH_USER'] != "a" or $_SERVER['PHP_AUTH_PW'] != "b"): 

を私も、このように認証を行って言及する必要があり、安全なもののために使用すべきではない、いくつかの詳細は、このarticleを見てください。

+0

リンクありがとうございます。私はこれが安全ではないことを認識しています。単なるテストに過ぎません。 – steffen

+0

このセキュリティ上の問題は、 '$ _SERVER ['PHP_AUTH_PW']!=" b "'を正しいパスワード検証ライブラリ関数の呼び出しで置き換えることで解決できます。 – kasperd