4

他のユーザーが信頼できるサイトに植え付けたjavascript関数を使用して、セッションIDCookieを簡単に盗むことができます。この種の攻撃に対して考えられる対策は何ですか?

ほとんどすべてのサイトがjsを使用しているため、クライアント側ですべてのjavascriptスクリプトを拒否することはおそらく困難です。サーバー側で考えられる対策は何ですか?有効なセッションIDが別のホストから使用されるのを防ぐために、セッションID値にクライアントIPアドレスのハッシュを含めることは可能ですか?このアプローチは理にかなっていますか?

貴重な回答で言及されているリソースの1つで、リクエストごとにセッションIDが変更されるソリューションが提案されています。そのような機能は、アプリサーバー/フレームワークですでにサポートされていますか?特にDjango/pythonはどうですか?

4

5 に答える 5

4

IPからセッションへのマッピングを行うのは本当に厄介です。なぜなら、人々がプロキシを使用していないという保証がなく、それらのプロキシがIPを簡単に変更する可能性があるからです。

あなたができる最善のことはSSLを使用し、あなたのクッキーをHTTPのみにすることです。

于 2011-01-24T15:19:36.850 に答える
2

一部のCookieが特定のホスト、ドメイン、サブドメインなど用であることを指定する必要があります。クッキーはそれをサポートします。

他のドメインのCookieにアクセスできるとは思いません。

于 2011-01-24T15:18:23.903 に答える
1

有効なセッションIDが別のホストから使用されるのを防ぐために、セッションID値にクライアントIPアドレスのハッシュを含めることは可能ですか?このアプローチは理にかなっていますか?

これにより、状況によってはセッションハイジャックがブロックされる可能性がありますが、攻撃者のコンピューターと被害者のコンピューターが同じネットワーク上にある場合、接続は同じIPアドレスからのものであるため、何も実行されません。

サーバー側で考えられる対策は何ですか?

SSLを使用すると、人がパブリックネットワークに接続している場合に、セッションハイジャックを防ぐことができます。

コードを確認して、コードにXSSの欠陥がないことを確認できます。

また、セッションの保存に使用されるCookieにHTTPOnlyフラグが設定されていることを確認することもできます

于 2011-01-24T15:24:01.403 に答える
1
  • 信頼できるJavaScriptのみをインストールしてください。コードがわからない場合は、ソースコードを調べてください(おそらく何らかのXSSスキャナーを使用してください)。
  • たとえば、次の単純なjavascriptスニペットを使用して(入力から)javascriptをフィルタリングします。

    function sanitize(html){
    `return String(html)
    .replace(/&(?!\ w +;)/ g、'&')
    .replace(/ .replace(/> / g、'>')
    .replace( / "/ g、'"');
    }

サーバー側にも適切なフィルタリング(入力)が必要ですたとえば、PHPにはフィルター拡張子があります。

于 2011-01-24T15:25:30.843 に答える
1

これはXSSと呼ばれます。そもそもクライアントにJavaScriptコードが植え付けられないようにするための最良の解決策。

興味深い解決策は、すべてのユーザー操作にトークンベースの認証を提供することです。詳細については、 OWASPCSRFページを確認してください。

編集:コメントにあるように、トークンはセッションハイジャックの問題を軽減するのに役立ちません。ウィキペディアの記事にセッションハイジャックについて記載されているように、最善の解決策は、ページがリロードされるたびに可能なセッションIDをローテーションすることです。

于 2011-01-24T15:25:52.287 に答える