1

Web ページでログイン機能を使用する場合、入力データを検証するためのベスト プラクティスは何ですか?

私は大規模なユーザーについて話しているのではなく、単一の管理者ロールについて話しているだけです。Web ページはデータベースを使用していないため、1 つのアカウントだけに機能を含めたくありません。

現時点では、入力されたデータとハードコードされたパスワードで If ステートメントを使用しているだけですが、これはどういうわけか安全ではないと感じていますが、同時に、サーバーにアクセスしない限り、ユーザーは php コードを見ることができません。または私は間違っていますか?

if($password == 'myPassword123')

ところで、サーバーから実際の .php ファイルをダウンロードする方法はありますか (ユーザーの観点から)。

4

4 に答える 4

0

パスワードをハッシュ!平文で保存しないでください。

また、構成ミスによってパスワードが公開されるのを防ぐために、Web ルートの外部にパスワードを保存します。これにより、PHP がコードを公開した場合、クライアント/攻撃者は実際のハッシュ/ファイルにアクセスできなくなります。これは、単純なユーザー関数内でcrypt()関数を使用してパスをチェックする簡単な例です。

<?php
function check_pass($password){
    $chkpass = file_get_contents(dirname(__FILE__).'/../path_outside/webroot/adminpass.txt');
    if(crypt($password, $chkpass) == $chkpass){
        return true;
    }else{
        return false;
    }
}

/* The file adminpass.txt contains the hash 
   $1$MH0.l.1.$aNx9btlqPfGpkAxK4Bdym. 
   which is mypassword in plaintext */
if (check_pass($_POST['password'])) {
   echo "ok!";
}else{
    echo "fail!";
}
?>
于 2013-07-15T10:25:25.160 に答える