{"title":"Perlindungan Cross Site Request Forgery","version":"4.1","locale":"id","docname":"ref/csrf","url":"/id/4.1/ref/csrf/","canonical":"https://djangodocs.dev/id/4.1/ref/csrf/","summary":"The CSRF middleware and template tag provides easy-to-use protection against Cross Site Request Forgeries . This type of attack occurs when a malicious website…","html":"<span id=\"cross-site-request-forgery-protection\"></span><h1>Perlindungan Cross Site Request Forgery<a class=\"heading-anchor\" href=\"#module-django.middleware.csrf\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>The CSRF middleware and template tag provides easy-to-use protection against\n<a class=\"reference external\" href=\"https://www.squarefree.com/securitytips/web-developers.html#CSRF\">Cross Site Request Forgeries</a>. This type of attack occurs when a malicious\nwebsite contains a link, a form button or some JavaScript that is intended to\nperform some action on your website, using the credentials of a logged-in user\nwho visits the malicious site in their browser. A related type of attack,\n'login CSRF', where an attacking site tricks a user's browser into logging into\na site with someone else's credentials, is also covered.</p>\n<p>The first defense against CSRF attacks is to ensure that GET requests (and other\n'safe' methods, as defined by <span class=\"target\" id=\"index-0\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-4.2.1\"><strong>RFC 7231 Section 4.2.1</strong></a>) are side effect free.\nRequests via 'unsafe' methods, such as POST, PUT, and DELETE, can then be\nprotected by the steps outlined in <a class=\"reference internal\" href=\"/id/4.1/howto/csrf/#using-csrf\"><span class=\"std std-ref\">How to use Django's CSRF protection</span></a>.</p>\n<section id=\"how-it-works\">\n<span id=\"how-csrf-works\"></span><h2>Bagaimana itu bekerja<a class=\"heading-anchor\" href=\"#how-it-works\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Perlindungan CSRF berdasarkan pada hal-hal berikut:</p>\n<ol class=\"arabic\">\n<li><p>A CSRF cookie that is a random secret value, which other sites will not have\naccess to.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">CsrfViewMiddleware</span></code> sends this cookie with the response whenever\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django.middleware.csrf.get_token()</span></code> is called. It can also send it in\nother cases. For security reasons, the value of the secret is changed each\ntime a user logs in.</p>\n</li>\n<li><p>A hidden form field with the name 'csrfmiddlewaretoken', present in all\noutgoing POST forms.</p>\n<p>In order to protect against <a class=\"reference external\" href=\"https://www.breachattack.com/\">BREACH</a> attacks, the value of this field is\nnot simply the secret. It is scrambled differently with each response using\na mask. The mask is generated randomly on every call to <code class=\"docutils literal notranslate\"><span class=\"pre\">get_token()</span></code>, so\nthe form field value is different each time.</p>\n<p>Bagian selesai dengan etiket cetakan.</p>\n</li>\n<li><p>Untuk semua permintaan datang yang tidak menggunakan HTTP GET, HEAD, OPTIONS atau TRACE, kue CSRF harus hadir, dan bidang 'csrfmiddlewaretoken' harus hadir dan benar. Jika itu tidak, pengguna akan mendapatkan kesalahan 403.</p>\n<p>Ketika mengesahkan nilai bidang 'csrfmiddlewaretoken', hanya rahasia, bukan seluruhnya token, dibandingkan dengan rahasia dalam nilai kue. Ini mengizinkan penggunaan dari token selalu-berubah. Selagi setiap permintaan mungkin menggunakan token nya sendiri, rahasia tetap umum pada semua.</p>\n<p>Pemeriksaan ini selesai dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">CsrfViewMiddleware</span></code>.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">CsrfViewMiddleware</span></code> verifies the <a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin\">Origin header</a>, if provided by the\nbrowser, against the current host and the <a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_TRUSTED_ORIGINS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_TRUSTED_ORIGINS</span></code></a>\nsetting. This provides protection against cross-subdomain attacks.</p></li>\n<li><p>In addition, for HTTPS requests, if the <code class=\"docutils literal notranslate\"><span class=\"pre\">Origin</span></code> header isn't provided,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">CsrfViewMiddleware</span></code> performs strict referer checking. This means that\neven if a subdomain can set or modify cookies on your domain, it can't force\na user to post to your application since that request won't come from your\nown exact domain.</p>\n<p>Ini juga membahas serangan seorang-dalam-tengah yang memungkinkan dibawah HTTPS ketika menggunakan sebuah rahasia berdiri sendiri sesi, dikarenakan kenyataan bahwa kepala <code class=\"docutils literal notranslate\"><span class=\"pre\">Set-Cookie</span></code> HTTP (sayangnya) diterima oleh klien bahkan ketika mereka sedang berbicara pada situs dibawah HTTPS. (Pemeriksaan perujuk belum dilakukan untuk permintaan HTTP karena kehadiran dari kepala <code class=\"docutils literal notranslate\"><span class=\"pre\">Referer</span></code> tidak cukup handal dibawah HTTP.)</p>\n<p>If the <a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_DOMAIN\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_DOMAIN</span></code></a> setting is set, the referer is compared\nagainst it. You can allow cross-subdomain requests by including a leading\ndot. For example, <code class=\"docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_DOMAIN</span> <span class=\"pre\">=</span> <span class=\"pre\">'.example.com'</span></code> will allow POST\nrequests from <code class=\"docutils literal notranslate\"><span class=\"pre\">www.example.com</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">api.example.com</span></code>. If the setting is\nnot set, then the referer must match the HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">Host</span></code> header.</p>\n<p>Memperluas rujukan diterima diluar rumah saat ini atau ranah kue dapat diselesaikan dengan pengaturan <a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_TRUSTED_ORIGINS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_TRUSTED_ORIGINS</span></code></a>.</p>\n</li>\n</ol>\n<aside class=\"version-note version-added\" data-version=\"4.0\">\n<p class=\"version-note-title\">New in Django 4.0</p><p><code class=\"docutils literal notranslate\"><span class=\"pre\">Origin</span></code> checking was added, as described above.</p>\n</aside>\n<aside class=\"version-note version-changed\" data-version=\"4.1\">\n<p class=\"version-note-title\">Changed in Django 4.1</p><p>In older versions, the CSRF cookie value was masked.</p>\n</aside>\n<p>Ini memastikan bahwa hanya formulir yang asli dari ranah terpercaya dapat digunakan untuk data POST kembali.</p>\n<p>It deliberately ignores GET requests (and other requests that are defined as\n'safe' by <span class=\"target\" id=\"index-1\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-4.2.1\"><strong>RFC 7231 Section 4.2.1</strong></a>). These requests ought never to have any\npotentially dangerous side effects, and so a CSRF attack with a GET request\nought to be harmless. <span class=\"target\" id=\"index-2\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-4.2.1\"><strong>RFC 7231 Section 4.2.1</strong></a> defines POST, PUT, and DELETE\nas 'unsafe', and all other methods are also assumed to be unsafe, for maximum\nprotection.</p>\n<p>Perlindungan CSRF tidak dapat melindungi terhadap serangan seorang-dalam-tengah, jadi gunakan <a class=\"reference internal\" href=\"/id/4.1/topics/security/#security-recommendation-ssl\"><span class=\"std std-ref\">HTTPS</span></a> dengan <a class=\"reference internal\" href=\"/id/4.1/ref/middleware/#http-strict-transport-security\"><span class=\"std std-ref\">HTTP Strict Transport Security</span></a>. Itu juga menganggap <a class=\"reference internal\" href=\"/id/4.1/topics/security/#host-headers-virtual-hosting\"><span class=\"std std-ref\">validation of the HOST header</span></a> dan yang tidak ada <a class=\"reference internal\" href=\"/id/4.1/topics/security/#cross-site-scripting\"><span class=\"std std-ref\">cross-site scripting vulnerabilities</span></a> apapun pada situs anda (karena kerentanan XSS sudah membiarkan seorang penyerang melakukan apapun mengizinkan kerentanan CSRF dan lebih buruk lagi).</p>\n<aside class=\"admonition-removing-the-referer-header admonition\">\n<p class=\"admonition-title\">Memindahkan kepala <code class=\"docutils literal notranslate\"><span class=\"pre\">Referer</span></code></p>\n<p>To avoid disclosing the referrer URL to third-party sites, you might want\nto <a class=\"reference external\" href=\"https://www.w3.org/TR/referrer-policy/#referrer-policy-delivery\">disable the referer</a> on your site's <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;a&gt;</span></code> tags. For example, you\nmight use the <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;meta</span> <span class=\"pre\">name=&quot;referrer&quot;</span> <span class=\"pre\">content=&quot;no-referrer&quot;&gt;</span></code> tag or\ninclude the <code class=\"docutils literal notranslate\"><span class=\"pre\">Referrer-Policy:</span> <span class=\"pre\">no-referrer</span></code> header. Due to the CSRF\nprotection's strict referer checking on HTTPS requests, those techniques\ncause a CSRF failure on requests with 'unsafe' methods. Instead, use\nalternatives like <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;a</span> <span class=\"pre\">rel=&quot;noreferrer&quot;</span> <span class=\"pre\">...&gt;&quot;</span></code> for links to third-party\nsites.</p>\n</aside>\n</section>\n<section id=\"limitations\">\n<span id=\"csrf-limitations\"></span><h2>Batasan<a class=\"heading-anchor\" href=\"#limitations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Subdomains within a site will be able to set cookies on the client for the whole\ndomain. By setting the cookie and using a corresponding token, subdomains will\nbe able to circumvent the CSRF protection. The only way to avoid this is to\nensure that subdomains are controlled by trusted users (or, are at least unable\nto set cookies). Note that even without CSRF, there are other vulnerabilities,\nsuch as session fixation, that make giving subdomains to untrusted parties a bad\nidea, and these vulnerabilities cannot easily be fixed with current browsers.</p>\n</section>\n<section id=\"module-django.views.decorators.csrf\">\n<span id=\"utilities\"></span><h2>Keperluan<a class=\"heading-anchor\" href=\"#module-django.views.decorators.csrf\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Contoh dibawah ini menganggap anda menggunakan tampilan berdasarkan-fungsi. Jika anda sedang bekerja dengan tampilan berdasarkan-kelas, anda dapat mengacu pada <a class=\"reference internal\" href=\"/id/4.1/topics/class-based-views/intro/#id1\"><span class=\"std std-ref\">Decorating class-based views</span></a>.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.decorators.csrf.csrf_exempt\">\n<span class=\"sig-name descname\"><span class=\"pre\">csrf_exempt</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">view</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.decorators.csrf.csrf_exempt\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Penghias ini menandai sebuah tampilan sebagai menjadi pengecualian dari perlinsungan dipastikan oleh middleware. Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.csrf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">csrf_exempt</span>\n\n<span class=\"nd\">@csrf_exempt</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s1\">&#39;Hello world&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.decorators.csrf.csrf_protect\">\n<span class=\"sig-name descname\"><span class=\"pre\">csrf_protect</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">view</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.decorators.csrf.csrf_protect\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Penghias yang menyediakan perlindungan dari <code class=\"docutils literal notranslate\"><span class=\"pre\">CsrfViewMiddleware</span></code> ke sebuah tampilan.</p>\n<p>Penggunaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">render</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.csrf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">csrf_protect</span>\n\n<span class=\"nd\">@csrf_protect</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"p\">{}</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"k\">return</span> <span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s2\">&quot;a_template.html&quot;</span><span class=\"p\">,</span> <span class=\"n\">c</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.decorators.csrf.requires_csrf_token\">\n<span class=\"sig-name descname\"><span class=\"pre\">requires_csrf_token</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">view</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.decorators.csrf.requires_csrf_token\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Biasanya etiket cetakan <a class=\"reference internal\" href=\"/id/4.1/ref/templates/builtins/#std-templatetag-csrf_token\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">csrf_token</span></code></a> tidak akan bekerja jika <code class=\"docutils literal notranslate\"><span class=\"pre\">CsrfViewMiddleware.process_view</span></code> atauxsetara seperti <code class=\"docutils literal notranslate\"><span class=\"pre\">csrf_protect</span></code> belum berjalan. Tampilan penghias <code class=\"docutils literal notranslate\"><span class=\"pre\">requires_csrf_token</span></code> dapat digunakan untuk memastikan etiket cetakan tidak bekerja. Penghias ini bekerja mirip pada <code class=\"docutils literal notranslate\"><span class=\"pre\">csrf_protect</span></code>, tetapi tidak pernah menolak permintaan datang.</p>\n<p>Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">render</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.csrf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">requires_csrf_token</span>\n\n<span class=\"nd\">@requires_csrf_token</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"p\">{}</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"k\">return</span> <span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s2\">&quot;a_template.html&quot;</span><span class=\"p\">,</span> <span class=\"n\">c</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.decorators.csrf.ensure_csrf_cookie\">\n<span class=\"sig-name descname\"><span class=\"pre\">ensure_csrf_cookie</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">view</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.decorators.csrf.ensure_csrf_cookie\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Penghias ini memaksa sebuah tampilan mengirim kue CSRF.</p>\n</dd></dl>\n\n</section>\n<section id=\"settings\">\n<h2>Pengaturan<a class=\"heading-anchor\" href=\"#settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Sejumlah pengaturan dapat digunakan untuk mengendalikan perilaku CSRF Django:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_AGE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_AGE</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_DOMAIN\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_DOMAIN</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_HTTPONLY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_HTTPONLY</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_NAME</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_PATH\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_PATH</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_SAMESITE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_SAMESITE</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_COOKIE_SECURE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_SECURE</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_FAILURE_VIEW\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_FAILURE_VIEW</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_HEADER_NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_HEADER_NAME</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_TRUSTED_ORIGINS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_TRUSTED_ORIGINS</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_USE_SESSIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_USE_SESSIONS</span></code></a></p></li>\n</ul>\n</section>\n<section id=\"frequently-asked-questions\">\n<h2>Pertanyaan Sering Ditanya<a class=\"heading-anchor\" href=\"#frequently-asked-questions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"is-posting-an-arbitrary-csrf-token-pair-cookie-and-post-data-a-vulnerability\">\n<h3>Apakah memasang pasangan token CSRF berubah-ubah (kue dan data POST) sebuah kerentanan?<a class=\"heading-anchor\" href=\"#is-posting-an-arbitrary-csrf-token-pair-cookie-and-post-data-a-vulnerability\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tidak, ini adalah berdasarkan perancangan, Tanpa serangan orang-di-tengah, tidak ada cara untuk seorang penyerang mengirim sebuah kue token CSRF ke peramban korban, jadi sebuah serangan berhasil akan butuh mengambil kue peramban korban melalui XSS atau yang mirip, dimana soerang penyerang biasanya tidak butuh serangan CSRF.</p>\n<p>Beberapa alat-alat pemeriksaan keamanan menandai ini sebagai sebuah masalah seperti disebutkan sebelumnya, seorang penyerang tidak dapat mencuri kue CSRF peramban pengguna. &quot;Stealing&quot; atau merubah token <em>milik anda</em> menggunakan Firebug, alat-alat pengembangan Chrome, dll. tidak rentan.</p>\n</section>\n<section id=\"is-it-a-problem-that-django-s-csrf-protection-isn-t-linked-to-a-session-by-default\">\n<h3>Apakah sebuah masalah bahwa perlindungan Django CSRF tidak berkaitan ke sebuah sesi secara awalan?<a class=\"heading-anchor\" href=\"#is-it-a-problem-that-django-s-csrf-protection-isn-t-linked-to-a-session-by-default\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>No, this is by design. Not linking CSRF protection to a session allows using\nthe protection on sites such as a <em>pastebin</em> that allow submissions from\nanonymous users which don't have a session.</p>\n<p>Jika anda berharap menyimpan token CSRF dalam sesi pengguna, gunakan pengaturan <a class=\"reference internal\" href=\"/id/4.1/ref/settings/#std-setting-CSRF_USE_SESSIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_USE_SESSIONS</span></code></a>.</p>\n</section>\n<section id=\"why-might-a-user-encounter-a-csrf-validation-failure-after-logging-in\">\n<h3>Mengapa seorang pengguna menghadapi kegagalan pengesahan CSRF setelah masuk?<a class=\"heading-anchor\" href=\"#why-might-a-user-encounter-a-csrf-validation-failure-after-logging-in\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Untuk alasan keamanan, token CSRF diputar setiap kali pengguna masuk. Halaman apapun dengan sebuah formulir dibangkitkan sebelum masuk akan tua, token CSRF tidak sah dan butuh dimuat kembali. Ini mungkin terjadi jika seorang pengguna menggunakan tombol kembali setelah masuk atau jika mereka masuk dalam peramban berbeda.</p>\n</section>\n</section>","rootId":"module-django.middleware.csrf","toc":[{"title":"Bagaimana itu bekerja","anchor":"how-it-works","children":[]},{"title":"Batasan","anchor":"limitations","children":[]},{"title":"Keperluan","anchor":"module-django.views.decorators.csrf","children":[]},{"title":"Pengaturan","anchor":"settings","children":[]},{"title":"Pertanyaan Sering Ditanya","anchor":"frequently-asked-questions","children":[{"title":"Apakah memasang pasangan token CSRF berubah-ubah (kue dan data POST) sebuah kerentanan?","anchor":"is-posting-an-arbitrary-csrf-token-pair-cookie-and-post-data-a-vulnerability","children":[]},{"title":"Apakah sebuah masalah bahwa perlindungan Django CSRF tidak berkaitan ke sebuah sesi secara awalan?","anchor":"is-it-a-problem-that-django-s-csrf-protection-isn-t-linked-to-a-session-by-default","children":[]},{"title":"Mengapa seorang pengguna menghadapi kegagalan pengesahan CSRF setelah masuk?","anchor":"why-might-a-user-encounter-a-csrf-validation-failure-after-logging-in","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/4.1/ref/"}],"prev":{"docname":"ref/contrib/syndication","title":"Kerangka kerja umpan perkongsian","url":"/id/4.1/ref/contrib/syndication/"},"next":{"docname":"ref/databases","title":"Basisdata","url":"/id/4.1/ref/databases/"},"formats":{"html":"/id/4.1/ref/csrf/","markdown":"/id/4.1/ref/csrf.md","json":"/id/4.1/ref/csrf.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/ref/csrf.txt","official":"https://docs.djangoproject.com/id/4.1/ref/csrf/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}