0

私の考えが正しければアドバイスをお願いします。情報を検索しましたが、正確な答えが見つかりませんでした。

ユーザーはユーザー名とパスワードを入力し、入力されたユーザー名/パスワードはmysqlの場合と同じです。

$ _SESSION ['loggedin']=1;を作成します。これは、サーバー上のどこかにr21bj2a3 ....のようなランダムな名前のファイルが作成され、ユーザーブラウザーではr21bj2a3...のような値のCookieが作成されることを意味します。

次のページで、($ _ SESSION ['loggedin'] == 1)かどうかを確認します。ユーザーブラウザがサーバーに接続し、次のようなサーバー情報を送信します。値r21bj2a3 ....のCookieがあります。次のコンテンツを送信してください?セッション?サーバーは、ログインしている特定のCookieセッションが1であるという情報を送信します。

悪意のあるユーザーがCookie値r21bj2a3....を取得した場合、サーバーに送信して通常のユーザーと同じ回答を取得するかどうかを理解していますか?

$ _SESSION ['loggedin']によっては、特定のユーザーを識別できませんか?ログインに成功した後に特定のユーザーを識別するために、一意のトークンを作成し、mysqlに記録して、セッションで渡すことができますか?そして、渡されたセッションのパスワードで保護されたページで、トークン値を取得し、そのような値がmysqlに存在するかどうかを確認(選択)します。この方法で大丈夫ですか?良い方法でいくつかのリンクを投稿することができますか?

トークンについて。トークン値をセッションで渡します。つまり、悪意のあるユーザーがCookie値を取得し、サーバーに送信して、トークン値を含む回答を取得した場合(つまり、悪意のあるユーザーは通常のユーザーの権限を取得します)?

4

3 に答える 3

0

セッションが属するユーザーを識別するには、セッションで実行可能を設定するだけです

$_SESSION['user'] = user

あなたはセッションへのアクセスを与えるクッキーについて正しいです。セキュリティが重要な場合は、SsLを使用してください。

于 2013-03-24T07:24:14.080 に答える
0

HTTPはステートレスプロトコルです。複数のページにわたるデータを追跡しないため、Webサイトのすべてのページにわたってグローバルにアクセスできるセッションが必要です。

現在Webサイトにログインしているユーザーを識別するには、ユーザーが正常に認証された後、userテーブルのuser_idフィールドの値をセッションに保存する必要があります。

例えば

$_SESSION['user_id']=$result['user_id']

また、ユーザーがログインしているかどうかを判断するには、$ _ SESSION['user_id']変数の値を確認できます。空の場合はユーザーがログインしていません。それ以外の場合はユーザーがログインしています。

于 2013-03-24T07:29:34.283 に答える
0

すべてのアクティブなセッションをデータベースに保存することをお勧めします。そのためのテーブルを作成し、セッションハイジャックを防ぐために、特定の各セッション(ログイン)をチェックして、ユーザーがすでに認証されているかどうかを確認してから、2回目の認証を許可しないようにします。

ここでの問題は、ユーザーを認識する方法ですか?USER_AGENTやIPアドレスなどの情報をバインドできますが、これらの情報はハッカーによってスプーフィングされる可能性もありますが、その可能性は低くなります。

また、ユーザーがサインアウトすると、データベース内のセッションレコードを削除できます。

于 2013-03-24T07:34:31.297 に答える