OriginValidatorを使う
AllowedHostsOriginValidatorを使う
ALLOWED_HOSTSを厳密にする
接続後にもユーザー権限を確認する
workspace、room、tenantの所属確認を行う
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import AllowedHostsOriginValidator
from channels.auth import AuthMiddlewareStack
application = ProtocolTypeRouter({
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(
URLRouter(websocket_urlpatterns)
)
),
})

OAuth認可フローでは、攻撃者が自分の認可レスポンスを被害者のブラウザへ注入し、アカウントの対応関係を入れ替える攻撃が問題になります。
主な防御は次のとおりです。