CSRF_COOKIE_HTTPONLY = Trueにすると、JavaScriptからdocument.cookieでCSRF Cookieを読めません。
その場合は、HTML内のトークンを取得します。
<form id="csrf-form">
{% csrf_token %}
</form>
function getCsrfTokenFromDom() {
const input = document.querySelector(
"[name=csrfmiddlewaretoken]"
);
if (!input) {
throw new Error("CSRFトークン要素がありません。");
}
return input.value;
}
CSRF_COOKIE_HTTPONLYは、CSRF対策の本質的な強化ではありません。
XSSが存在すれば、攻撃者はCookieを直接読めなくてもDOM内のトークンを読んだり、正規JavaScriptとしてリクエストを送ったりできます。