4

SQLテーブルのuser_idをセッションIDとして使用するのは安全ではありませんか?これは通常、PHP開発者が行うことですか?


(出典:sockface.com

また、セッションIDをユーザーIDとして保存することを何度も試みました

include('profile/core/init_inc.php');    
$_SESSION['uid'] = $user_id;
header("Location: profile/edit_profile.php");

私のinit_incで

function fetch_user_info($uid){
$uid = (int)$uid;

$sql = "SELECT
            `user_id` AS `id`,
            `username`,
            `user_firstname` AS `firstname`,
            `user_lastname` AS `lastname`,
            `user_about` AS `about`,
            `user_email` AS `email`
        FROM `users`
        WHERE `user_id` = {$uid}";

$result = mysql_query($sql);        
return mysql_fetch_assoc($result);

$ _SESSION ['uid']=90の場合; ログオンすると、ここにtest@test.ca情報が表示されます

だから私の質問は、セッションIDをuser_idとして保存するのは安全ですか、そしてそれをしようとするとどうしてそれが機能しないのですか?

4

1 に答える 1

2

いくつかのこと:

1.)セッションIDは、特定のユーザーの定数値であってはなりません。これはセキュリティ違反です。セッションIDは時々変更する必要があります。理想的には、ランダムな値である必要があります。

2.)セッションIDを設定しているようには見えません。「uid」というセッション変数を設定しています。

3.)電話したことはありますsession_start()か?


セッションIDを定数値に設定することはお勧めしませんが、session_id()関数を使用してセッションのIDを設定できます。

$session_id = "some_random_value";
session_id($session_id);

しかし、私が言ったように、これはユーザーのIDであってはなりません。ユーザーのIDをセッション情報として保存し、ユーザーがページを読み込んだときにログインしているかどうかを確認できます。

if (isset($_SESSION["user_id"]))
{
    //user is logged in
    $user_id = $_SESSION["user_id"];
}
else
{
    //make user log in
    $user_id = result_of_login();
    $_SESSION["user_id"] = $user_id;
}

PHPセッションの詳細については、セッションドキュメントを参照してください。

于 2012-10-13T04:41:36.530 に答える