9

現在、websocket の CSRF 脆弱性を検討しています。

私はすでにすべてのクロスドメイン Websocket リクエストをブロックしましたが、そのようなセキュリティ対策を回避するためのスクリプト (この python bad boyなど) が存在します。

ユーザーの index.html にトークンを含める価値はありますか?これはクエリ文字列として socket.io.connect() 呼び出しに含める必要がありますか? このようにして、サーバー上でトークンが期待どおりであることを確認し、それ以外の場合は接続要求をブロックできます。

すべてのアドバイスをありがとう!

4

2 に答える 2

3

socket.io接続の承認ハンドラーを設定してみませんか?ハンドシェイク中に収集された情報に基づいて、そこでの接続を拒否/受け入れることができます。

これに関する詳細については、https://github.com/LearnBoost/socket.io/wiki/Authorizingを参照してください。

于 2012-09-03T19:09:41.993 に答える
1

私はdjangoでsocket.ioを使用しています。私が認証を処理する方法は、最初に CSRF トークンを含む通常の HTTP フォームを使用してユーザーにログインすることを要求することです。ログインに成功すると、セッション Cookie が設定され、ユーザーは socket.io アプリにリダイレクトされます。

接続認証コードでは、Cookie をチェックしてユーザーがログインしていることを検証し、チェックが失敗した場合は「401 Not Authorized」を返します。

ユーザーに最初のログインを要求したくない場合、または @3rdEden が指摘したように、認証中に CSRF トークンを URL パラメーターとして渡すこともできます。

于 2012-09-07T04:40:25.340 に答える