0

現在、私は次のようにセッションを開始しています:

if ($hasher->CheckPassword($password, $hash)) { //$hash is the hash retrieved from the DB 
        $what = 'Authentication succeeded';
            $_SESSION['username']=$_POST['username'];
         header('Location: securedpage1.php');
    } else {
        $what = 'Authentication failed';
        echo "Incorrect Password";
        include 'login.php';
        exit();

    }

ご覧$_SESSION['username']=$_POST['username'];のとおり、セッションを開始するのに最適な方法なのか、それともより良い方法があるのか​​疑問に思っています。

ご回答ありがとうございます!

4

3 に答える 3

2

ファイルシステムではなくデータベースをストレージポイントとして使用して、独自のセッションハンドラーをロールすることができます。これにはいくつかのセキュリティ上の利点があります。たとえば、共有ホストでは、ファイルシステムに保存されているセッションデータが危険にさらされる可能性があります。コメントで述べたように、この方法で「送信元」IPアドレスを保存してセッションに関連付け、元のIP以外のIPからアクセスされたセッションを無効にすることもできます。

この記事は非常に詳細に説明しています:http ://shiflett.org/articles/storing-sessions-in-a-database

于 2012-09-07T13:12:03.590 に答える
1

$_SESSION['username']=$_POST['username'];実際にはセッションを開始しませんsession_start()。だからあなたの質問は見当違いです。

そのコード行には本質的に何も問題はありません。

安全なセッションコードの記述に関する情報を知りたい場合は、ここから始めるのが悪いことではありません:http: //phpmaster.com/php-sessions/

検索できるセキュリティキーワードは、「セッション固定」と「セッションハイジャック」の2つです。他の2つの一般的なセキュリティ問題は、XSS攻撃とCSRF攻撃です。

すでにstackoverflowにあるこの主題に関する以前の質問の山もあります、あなたは検索するべきです。たとえば

于 2012-09-07T13:13:19.953 に答える
0

例には示されていませんがsession_start()、コードのどこかにあると思いますか?セッション開始について詳しくは、こちらをご覧ください。PHP Manual: Session Start

于 2012-09-07T13:08:01.557 に答える