ユーザーが自分のクッキーをどのように操作できるのか疑問に思っています。
私が知っているように、CIはそれを知ることができ(Cookieの最後の関係cookie_value/unique_keyのため)、CIが発生するとCookieが更新されます。
そして彼はこれを記録します:
セッション Cookie データが予期したものと一致しませんでした。これはハッキングの試みである可能性があります
ポイントは、ログインデータを保存するためにネイティブphpセッションを使用することについて話す人もいますが、盗難のリスクは同じです(CI Cookieの場合はおそらくそれよりも少ないでしょう)。私が見ることができる唯一の違いは、ユーザーが CI Cookie セッションに保存されているデータを確認できることです。
CIセッションCookieは安全ですか?または、ネイティブ php セッションよりも安全性が低いのはなぜですか?
トラフィックの多いウェブサイトでは、負荷料金も抑えるように気をつけています。
下手な英語でごめんなさい..
CI セッションの検証を説明するために編集します。
機密データを保存したくない場合、セッション Cookie は暗号化されず、データベースにも保存されません。
CI 2.1.3 セッション ライブラリに従って、CI_Session::sess_read()
135 行目でメソッドが宣言され、CI_Session::ses_write()
235 行目でメソッドが宣言されます。
CI が Cookie を作成すると、このデータが配置されます
[array]
(
'session_id' => random hash,
'ip_address' => 'string - user IP address',
'user_agent' => 'string - user agent data',
'last_activity' => timestamp
)
この配列をシリアル化し、md5 ハッシュ (シリアル化されたデータと構成で提供された暗号化キーから) を最後に置きます。
// if encryption is not used, we provide an md5 hash to prevent userside tampering
$cookie_data = $cookie_data.md5($cookie_data.$this->encryption_key);
そのため、CI への次の http リクエストからセッション ライブラリが初期化されるとき
それは実行し、次のことを自問します。
- 分離
data
しhash
、セッション cookie から - md5
hash
に等しいmd5( data + encryption_key )
ですか? data
アンシリアライズできますか?- 最小限のデータはすべてここにありますか?
- このセッションは期限切れですか?
- IP は一致しますか?
- USER AGENT は一致しますか?
これらの答えのいずれかが NO の場合、CI セッションは破棄され、リセットされます。
この場合のPHPネイティブセッションに加えて、相対的なリスクを教えてください。