3

私は HTTPS を使用していますが、他の誰かが最近実際に使用したセッション ID を使用して、悪意のあるユーザーが独自の Cookie を作成するリスクを最小限に抑えたいと考えています。

セッション変数として有効期限があるため、セッションが最近使用されていない場合はセッションが無効になります。そのため、被害者がアクティブであるか、最近適切にログアウトせずにサイトを離れたときが機会の窓であると考えています.

私は膨大な量のトラフィックを期待しておらず、標準の php メソッドを使用してセッション ID を生成しています。ここで誰かが実際に誰かのセッションをハイジャックすることに成功する(または試みさえする)「リスク」はゼロに近いと思います。

私がやりたいことは、を使用せず$_SERVER['REMOTE_ADDR']に、何らかの形でリモートユーザーを「識別する」ことです。私の考えでは、攻撃者は有効なセッション ID を見つけるだけでなく、実際のユーザーのさまざまなプロパティになりすます必要があります。

ユーザーが証明書を使用してログインすることを強制したくありません。祖母や彼女のような非技術者であっても、すべての標準的な Web ブラウザーで動作するようにしたいと考えています。

それで、私が最初に聞きたかったのは、使用できる HTTPS セッションの「プロパティ」はありますか? それらは役に立ちますか?もしそうなら、どうすればそれらを見つけることができますか? phpinfo()HTTPS固有のものは何も明らかにしません。(httpd露出しないから?)

ユーザー間で十分に一意であると想定されるHTTP_USER_AGENT+ HTTP_ACCEPT+ HTTP_ACCEPT_LANGUAGE+ HTTP_ACCEPT_ENCODING+または同様のものを連結して使用する必要がありますか?HTTP_ACCEPT_CHARSET

すべての回答に非常に満足しています! (ただし、StackOverflow に関する他の質問への参照のみで回答する前に、質問を読んでください) ありがとうございます!

4

2 に答える 2

3

セッションCookieにセキュアフラグとhttp_onlyフラグの両方が設定されていることを確認する必要があります。また、セッション固定の問題を回避するために、ユーザーが認証するときにsession_idを変更する必要があります。

あなたが提案するものはフィンガープリントに関しては比較的安全であるはずですが、それは実際にはそれほど選択的ではありません-指紋に使用されるべきではないものがたくさんあるので(CLIENT_ADDRESSのように)、より良いものを提案するのはそれほど簡単ではありません。

上記の私の提案とは別に、他の潜在的なセキュリティ問題を調べることに時間を費やすことをお勧めします。

C。

于 2010-07-15T15:49:10.260 に答える
2

OWASP トップ 10は、このクラスの攻撃に対する優れた支援手段です。具体的には、次の 3 つについて心配する必要があります。

A2: クロスサイト スクリプティング (XSS)

A3: 認証とセッション管理が壊れています。

A5: クロスサイト リクエスト フォージェリ (CSRF) (「セッション ライディング」とも呼ばれます)

ほとんどすべての $_SESSION 変数は攻撃者に知られており、任意の値である可能性があります。攻撃者がこれらの変数に影響を与えるのは些細なことなので、これらの変数をチェックしても意味がありません。重要な例外は$_SERVER['remote_addr']、apache の TCP ソケットから直接取得されるものであるため、この値を偽装したり改ざんしたりすることはできません。ただし、攻撃者が同じネットワーク セグメントにいる場合 (カフェであなたのすぐ後ろでコーヒーをすすっていた場合など)、攻撃者は同じ IP アドレスを持っています。

于 2010-07-15T17:40:23.673 に答える