2017-08-29 5 views
-1

訪問者が有効なパスワードを入力した後にPHPセッションを作成したいので、ページを再読み込みしても訪問者への隠しリンクを表示できます。PHP有効なパスワードの後に​​セッションを作成

<?php 
if(isset($_POST['submit'])) { 
    $password = crypt('sumpasswurd', password_hash('rasmuslerdorf', PASSWORD_BCRYPT)); // password 

    if (hash_equals($password, crypt($_POST['password'], $password))) { 
     echo 'VALID!'; 
     // CREATE SESSION HERE 
    } else { 
     echo 'INVALID'; 
    } 
} 

if(isset($_SESSION)) echo 'YOU ARE LOGGED IN WITH A VALID PASSWORD!'; 
?> 
<form method="POST" action=""> 
    <input type="text" name="password"> 
    <input type="submit" name="submit" value="OK"> 
</form> 

どうすればこの問題を解決できますか?私のフォームの暗号化は安全ですか?

+1

。ユーザー入力が既知のハッシュと等しいかどうかを確認するには、 'password_verify'を使用しなければなりません。 – iainn

+0

パスワードは何ですか?あなたのファイルにはハードコードされていますか?それは 'rasmuslerdorf'ですか、' sumpasswurd'ですか?それがハードコーディングされている場合は、なぜそれをすべてハッシュするのですか? – deceze

+0

これは 'sumpasswurd'だと思いますが、誰かがパスワードを何とか見ることができたら、それをプロセスでハッシュするのが良い方法です。 – Mitch

答えて

0

マニュアルセッションはsession_start()で始まります。あなたは何らかの種類のユーザー識別ロジックによってセッションを保護する必要がありますが。たとえば、ユーザーのユーザー名があり、それをセッション変数として追加した後、現在のセッションユーザーが本当にログインしていることを確認するために、ある種のセッションIDを渡します。その後、ユーザーに関連付けられているすべてのページロードでこれらの変数をチェックする必要があります。

時:// CREATE SESSION HEREあなたはこのようなものを使用することがあります:あなたは `password_hash`と` crypt`をミックスする必要はありません

Session_start(); 
$_SESSION['username'] = $username; 
// flollowed by session id logic 
関連する問題