4

私の理解では、ASPはセッションを認証するためにCookieを生成します。ただし、そのCookieがhttps以外のチャネルを介して送受信される場合、Cookieをスプーフィングするだけでスプーフィングすることはできませんか?Cookieを特定のIPまたは他のマシンの指紋にロックできますか?

4

2 に答える 2

4

ASP.NET のセッションは認証されません。認証は完全に分離されています。セッション Cookie を取得して再作成することで、セッションをハイジャックできます。認証 Cookie を解除すると、ユーザーとして認証できます (これが、デフォルトで認証 Cookie の有効期限が切れる理由です) - http://msdn.microsoftを参照してください。 .com/en-us/library/ms178581.aspx

セキュリティ ノートは非常に明確です。

SessionID 値は、Cookie として、または URL の一部として、クリア テキストで送信されます。悪意のあるユーザーは、SessionID 値を取得し、それをサーバーへの要求に含めることで、別のユーザーのセッションにアクセスできる可能性があります。機密情報をセッション状態に保存する場合は、SSL を使用して、SessionID 値を含むブラウザーとサーバー間のすべての通信を暗号化することをお勧めします。

于 2013-02-04T21:34:13.473 に答える
1

私の最後の仕事では、ユーザーのセッション ID (クエリ文字列として URL に GUID を追加しました。他の方法もあります) を追跡することで、これを回避しました。データベースには、要求を行った IP アドレスも格納されます。後続のすべてのリクエスト (機密情報を取得するためのセッション ID を持つもの) では、セッション ID と、セッションを認証してセットアップしたときに保存された値に対してリクエストを行っている IP を確認するだけです。Request.UserHostAddress は、スプーフィングが少し難しくなります。多少のオーバーヘッドはありますが、Cookie よりもはるかに安全です。

于 2013-02-04T21:45:21.370 に答える