1

PHP Session Fixation / Hijackingなどのスレッドや、Chris Shiflett などの一部の人々は$_SESSION['HTTP_USER_AGENT']、セッションの有効性を確認するためにユーザー エージェント ( ) を確認することを推奨しています。一部のリソースでは、次のようなことを推奨しています。

<?php

$string = $_SERVER['HTTP_USER_AGENT'];
$string .= 'SHIFLETT';

/* Add any other data that is consistent */

$fingerprint = md5($string);

?>

しかし、Chris Snyder氏は、「ブラウザー エージェントの世界は、ユーザーの世界に比べて非常に小さいため、各ユーザーが個別のユーザー エージェントを持つことは不可能です。さらに、ユーザー エージェントを偽装することは難しくありません」と述べています。したがって、セッションの有効性の証明としてこのメ​​トリックをチェックすることにはほとんど意味がありません」(第 7 章、103 ページ)。

矛盾するアドバイスに遭遇したとき、また、アドバイスの一部が古くなっている可能性がある場合 (上記の Shiflett/PHPSec の例のように、タイムスタンプが 2005 年 3 月 18 日金曜日のようです) に何をすべきかを知ることは非常に困難です。Snyder の (発行日: 2010 年 12 月 9 日) などの新しいアドバイスの方が優れているように見えますが、これは常にそうなのでしょうか? (たとえば、 の使用を推奨するのに多くの時間を費やしているにもかかわらずmysqli、Snyder は、Stack Overflow ユーザーがより良い選択であることに同意しているように見えることを完全に無視していますPDO。 .

したがって、私の質問には 2 つの部分があると思います。1 つは具体的な部分 (ユーザー エージェントを調査する必要がありますか?) であり、もう 1 つは一般的な部分 (PHP セキュリティの最新の考え方については、誰のアドバイスを信頼すべきでしょうか?) です。 Stack Overflow の人々を信頼してください!」-- あるいは、そもそも私が質問することはありません。なぜなら、最新の考え方をクラウドソーシングすることが、多くの場合、最良のアイデアであるからです。

HTTPSの質問を明確にするために、@Raduとのコメントでの有用な議論に続いて-

Snyder は次の 2 つのことを言っているようです。2.) HTTPS を使用できない状況では、ユーザー エージェントをチェックすることはまだあまり役に立ちません (これは、彼がおそらく古いアドバイスに同意しないポイントのようです)。

4

3 に答える 3

3

中間の人物がセッション ID を乗っ取ることができる場合、同じユーザー エージェントを送信することに何の問題もないはずです。これはあいまいさによるセキュリティです。

本当の保護が必要な場合は、HTTPS を使用してください。

于 2011-08-03T16:57:15.153 に答える
0

セッションの問題は、そのセッションを使用するために必要なのはセッションIDだけであるということです。有効なセッションIDがわかっている場合は、そのセッションを使用できます。これがセッションの仕組みです。

現在、特定のクライアントが特定のセッションを使用するための有効性を検証するために、追加のデータを使用することを提案する人もいます。ユーザーエージェントIDは、ある種の一意であり(Panoptoclickを参照して独自のテストを行う)、セッション中に変更されない(クライアントから提供される他の情報とは対照的に)ため、推奨されるデータです。

ただし、これはセッション固定の可能性を下げるだけであり、セッションハイジャックの場合に外部セッションが誤って使用されるのを防ぎます。攻撃者は、セッションを修正またはハイジャックするときに、被害者のユーザーエージェントIDを取得し、それをスプーフィングしようとする可能性があるためです。そしてここでは、ユーザーエージェントIDをプレーンで保存するか(ソルト)ハッシュとして保存するかは関係ありません。

すでに証明されている保護手段を使用することをお勧めします。

于 2011-08-03T17:34:39.560 に答える
0

ユーザー エージェントは、それ自体で完全にばかげているわけではありませんが、他のセキュリティの上に薄いレイヤーを追加します。何をフィンガープリントにするかについては議論があります。それにもかかわらず、それは多層防御の原則に追加されます。Cookie を設定し、それをユーザー エージェントと特定の単語と組み合わせて使用​​して、フィンガープリントを作成できます。私のポイントは、それは少しですがセキュリティを強化するということです!

于 2011-08-03T17:28:57.893 に答える