from django.contrib.auth import authenticate
from django.http import JsonResponse
from django.views.decorators.http import require_POST
@require_POST
def disable_mfa(request):
password = request.POST.get("password", "")
user = authenticate(
request,
username=request.user.get_username(),
password=password,
)
if user is None:
return JsonResponse(
{"error": "再認証に失敗しました。"},
status=403,
)
# MFA解除処理
return JsonResponse({"status": "ok"})
再認証はCSRF対策の代わりではありません。
CSRF防御を通過した場合の被害をさらに抑える多層防御です。
可能な補助対策は次のとおりです。