2016-03-31 16 views
-2

私SESSIONがsucessesfullログイン後に開始され、私は本当に私のSESSION値がどのように安全であるかわからない

マイSESSION値がここuser nameであるとは、私のコード

ですここで
<?php 
require_once('includes/config.php'); 
if ($user->is_logged_in()) { 
    header('Location: signup.php'); 
} 
if (isset($_POST['submit'])) { 
    $username = filter_input(INPUT_POST, 'username'); 
    $password = filter_input(INPUT_POST, 'password'); 
    if ($user->login($username, $password)) { 
     $_SESSION['username'] = $username; 
     header('Location: index.php'); 
     exit; 
    } else { 
     $error[] = 'Wrong username or password or your account has not been activated.'; 
    } 
} 
?> 

私の関数は

private function get_user_hash($username){ 
     try { 
      $stmt = $this->_db->prepare('SELECT password FROM members WHERE username = :username AND active="Yes" '); 
      $stmt->execute(array('username' => $username)); 
      $row = $stmt->fetch(); 
      return $row['password']; 
     } catch(PDOException $e) { 
      echo '<p class="bg-danger">'.$e->getMessage().'</p>'; 
     } 
    } 
    public function login($username,$password){ 
     $hashed = $this->get_user_hash($username); 
     if($this->password_verify($password,$hashed) == 1){ 
      $_SESSION['loggedin'] = true; 
      return true; 
     } 
    } 

ある今、私は私の$_SESSION

がいかに安全に知っておく必要があります

と$ _SESSIONの値をどのようにして保護するのですか

+0

セッションデータを暗号化しますか? – Juakali92

+0

しかし、いくつかの質問で私は暗号化を読んでも意味がありません、そしてそれは役に立たないのです –

答えて

1

まず、PHPでのセッションの仕組みをより深く理解することは重要です。あなたがsession_start()を実行すると、PHPは現在の訪問者のためのIDを登録します。たとえば、セッションIDにリンクされた情報を受信/保存を開始することができます:

session_start(); // Registered visitor ID on server "B3D4IUC86" 
$_SESSION['password'] = "test1234"; // Stores password for visitor "B3D4IUC86" 
echo $_SESSION['password']; // Retrieves 'password' index for visitor "B3D4IUC86" 

直接、セキュア/非暗号化データを格納しないことがベストプラクティスですこのデータは転送中に傍受されたり、直接アクセスされたりする可能性があります。むしろ、あなたのマシンで検索して情報を内部的に見つけることができるIDを保管してください。これにより、すべてのデータを転送するのではなく、検索できるシンプルなIDだけを転送するので、ネットワーク転送速度も(わずかに)向上します。

+0

私は単に 'ユーザ名'を保存すればどうですか? –

+0

あなたはこの値を調べることができる限り、データベースシステム(MySQL、NoSQL、MongoDBなど)のいくつかの並べ替え! –

+0

何らかのデータベースシステムが何を意味するのですか? –

関連する問題