2016-11-10 21 views
2

私はちょうどセッションを確実にすることについて考えていました。だから誰かが私にこれを理解させる助けとなるだろうか?ログインセッションを安全にする方法

申し訳ありませんが、私はそれをどのように考えるか説明しましょう。だから、basicly

<?php 

if(!isset($_SESSION['login'])) { 
    $_SESSION['login'] = false; 
} 

?> 

(私は分のポイントを取得します、心配しないでください)、どんな$_SESSION['login']常に存在しません。かなりきちんとした?多分。

いいえ、ユーザーにログインしてもらいたいとします。 (ポイントに近づく)

<?php 

if($_SESSION['login'] === false) 
{ 

    if(isset($_POST['login-form'])) 
    { 
    // execute login code . . . 

    // if the user had logged in successfully 
    if($success === true) 
    { 
     echo "Successfully logged in."; 
     $_SESSION['login'] = true; 
     $_SESSION['username'] = $_POST['username']; 
     // remember, I just wrote up an example, 
     // and everything would be filtered and sanitized 
     // if this were production code 
    } 
    } 
} 

?> 

これはセットアップ方法です。 (ほぼそこに)

<?php 

if($_SESSION['login'] === true) 
{ 
    // get database user information where username is $_SESSION['username']. 
    // also, the database table: users, would have unique usernames, 
    // they can't be the same. 
} 

?> 

わかりましたので、セットアップが完了しました。しかし、誰かが$_SESSION['login']trueに編集するとどうなりますか?そして、彼らは彼らが望むユーザー名に$_SESSION['username']を変更しますか?つまり、誰かが必要とするアカウントをハックすることができます。また、ユーザーのパスワードと重要なデータを格納するアプリケーションを構築する場合は誰も望んでいません。

質問にはどうしたらいいですか?あなたはdeveloper-tools(chrome)に行き、コンソールに入り、javascriptでCookieを変更することで、Cookie /セッションを変更できます。

もう一度確認する必要がありますか?しかし、それがポイントです。だから、あなたのうちの一人がこの質問を理解するのを手伝ってくれたらうれしいです。

答えて

3

ユーザーがブラウザに持つセッションの唯一の部分は、CookieのセッションIDです。期間。

ユーザーはセッションデータをローカルで表示または編集することはできず、すべてがサーバーに保存されています。

現代のPHPのセッション生成はかなり安定しているため、外部エンティティが有効なセッションIDを推測することは非常に難しく、SSLを使用している場合は[これは、誰かが通過中のセッションCookieを盗むことは不可能です。

+0

side note:セッションIDは常にクッキーで渡されるとは限りません –

+0

だから、人々は私のセッションにアクセスすることができません。つまり、私がSSLを使用している限り、私は良いものになるはずです。まあ、少なくともあなたが言っていることから。 –

+1

@ダゴン:機能ではなくバグであるURLに 'PHPSESSID'を渡していればうまくいきます。少なくともIMHO。 :P – Sammitch

関連する問題