1

だから私の質問は非常に基本的です。

ユーザーがまだページにログインしているかどうかを確認するときは、次を使用します

if (isset($_SESSION['user']) && $_SESSION['user'] == true) { CODE }

しかし、$_SESSION['user'] にブール値の代わりにハッシュ値を使用すべきではありませんか? 私が見つけたすべてのガイドはブール値を使用していますが、私の観点からは、それはセキュリティ リークですよね? 人々は常にセッション ハッキングとセッション固定化について話し合っていますが、ユーザー セッションにブール値を使用するだけであれば、それは非常に簡単ではないでしょうか? それとも、ここで物事を混ぜているだけですか?

ありがとうございました

4

1 に答える 1

2

ここで2つの質問を読みました。最初の質問「ユーザーがログインしているかどうかを判断するためのベスト プラクティスは何ですか?」と 2 番目の質問「Session-Hjacking と Session-Fixation の懸念はありますか?」

最初の質問: 私が扱ってきたほとんどの Web アプリ/CM には、ユーザー オブジェクトがあります。コードの観点から見ると、このオブジェクトには特に特別なことはなく、ユーザーを表すオブジェクトにすぎません。現在ログインしているユーザーのユーザー オブジェクトは、セッションに保存されています。$_SESSION['user']

Drupal (およびその他のプラットフォーム) では、現在ログインしているユーザーを返すために a 関数が使用され、ユーザーがログインしていない場合は False が返されます。

例:

function user(){
 if( isset($_SESSION['user') and 
     is_object($_SESSION['user'] and 
     get_class($_SESSION['user']=='myUserClass')) ){

         return $_SESSION['user'];

     }else{
         return False;
      }
}

したがって、あなたの例ではif ( user() ) { CODE }、すべてのオブジェクトがif節で True として評価されるため、動作が見られます。

2 番目の質問: セッション ハッキングとセッション固定は、ここでは特に問題ではありません。クライアント (Web ブラウザー) は、サーバーの $_SESSION 配列にアクセスできません。要するに、はい、ここで物事を混同しています。

于 2013-02-14T19:01:39.230 に答える