web-dev-qa-db-ja.com

PHPセッションはCookieまたはCookie-IPペアに基づいていますか?

私はPHPウェブサイトを持っていて、私の質問は:

誰かがXSS攻撃を介してユーザーのCookieを盗んだ場合、
彼がユーザーとして識別されるのに十分ですか?
または、彼のIPもログインしているユーザーと同じである必要がありますか?

私のphp.iniでは、session.use-cookiesとsession.use-only-cookiesがtrueに設定されています

5
fiftyeight

クッキーのみ;もちろん、これを妨げるものは何もありません。

if (empty($_SESSION['ip']) {
  $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
} else {
  if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']) {
    // IP changed
  }
}

IPアドレスでユーザーを識別することはあくまでも暫定的な措置であり、セキュリティに関連するとは考えないことに注意してください。大規模な組織ではNATを使用しているため、複数のコンピューターがインターネット全体に対して同じアドレスを持っているように見えます。逆に、例えばモバイルユーザーのIPアドレスは頻繁に変更される可能性があるため、「同じIPアドレス==同じユーザー、異なるIPアドレス==異なるユーザー」と自動的に想定しないでください。

その他の懸念事項:IPv4およびIPv6デュアルスタック、IPv6プライバシー拡張など.

A PHP 'SESSION' cookieには、箱から出してIPアドレス情報が組み込まれていません。Piskvorが示したように、それをその情報に関連付けることは可能ですが、そうすることで一部のユーザーのアプリケーションが壊れる可能性があります。 OWASPの説明 を参照して、IPアドレスバインディングが引き起こす可能性のある問題を確認してください。

6
gowenfawr