{"title":"Conas cosaint CSRF Django a úsáid","version":"6.0","locale":"ga","docname":"howto/csrf","url":"/ga/6.0/howto/csrf/","canonical":"https://djangodocs.dev/ga/6.0/howto/csrf/","summary":"Chun leas a bhaint as cosaint CSRF i do thuairimí, lean na céimeanna seo: Cuirtear an middleware CSRF i ngníomh de réir réamhshocraithe sa shocrú:: MIDDLEWARE. Má…","html":"<span id=\"using-csrf\"></span><h1>Conas cosaint CSRF Django a úsáid<a class=\"heading-anchor\" href=\"#how-to-use-django-s-csrf-protection\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Chun leas a bhaint as cosaint CSRF i do thuairimí, lean na céimeanna seo:</p>\n<ol class=\"arabic\">\n<li><p>Cuirtear an middleware CSRF i ngníomh de réir réamhshocraithe sa shocrú:: MIDDLEWARE. Má sháraigh tú an socrú sin, cuimhnigh gur chóir go dtiocfadh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>django.middleware.csrf.csrfviewMiddleware'` roimh aon mheán dearcadh a ghlacann leis gur déileáladh le hionsaithe CSRF.</p>\n<p>Má dhíchumasaigh tú é, nach moltar, is féidir leat: func: ~django.views.decorators.csrf.csrf_protect a úsáid ar thuairimí áirithe ar mhaith leat a chosaint (féach thíos).</p>\n</li>\n<li><p>In aon teimpléad a úsáideann foirm POST, bain úsáid as an clibe:ttag: csrf_token taobh istigh den eilimint <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a><a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>má tá an fhoirm le haghaidh URL inmheánach, &lt;form&gt;m.sh.:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">csrf_token</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Níor cheart é seo a dhéanamh le haghaidh foirmeacha POST a dhíríonn ar URLanna seachtracha, mar go mbeadh sé sin ina chúis le sceitheadh ​​an chomhartha CSRF, rud a d’fhágfadh go mbeadh leochaileacht ann.</p>\n</li>\n<li><p>Sna feidhmeanna amharc comhfhreagracha, cinntigh go n-úsáidtear: class: ~django.template.requestContext chun an freagra a thabhairt ionas go n-oibreoidh <code class=\"docutils literal notranslate\">{% csrf_token%} `i gceart. Má tá tú ag úsáid an fheidhme:func: `~django.shortcuts.render`, tuairimí cineálacha, nó aipeanna contrib, tá tú clúdaithe cheana ós rud é go n-úsáideann siad seo go léir ``RequestContext</code>.</p></li>\n</ol>\n<section id=\"using-csrf-protection-with-ajax\">\n<span id=\"csrf-ajax\"></span><h2>Cosaint CSRF a úsáid le AJAX<a class=\"heading-anchor\" href=\"#using-csrf-protection-with-ajax\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Cé gur féidir an modh thuas a úsáid le haghaidh iarratais AJAX POST, tá roinnt míchompordach aige: caithfidh tú cuimhneamh an comhartha CSRF a chur isteach mar shonraí POST le gach iarratas POST. Ar an gcúis seo, tá modh malartach ann: ar gach XMLHttpRequest, socraigh ceannteideal saincheaptha <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>X-CSRFToken` (mar a shonraítear leis an socrú:setting: CSRF_HEADER_NAME) le luach an chomhartha CSRF. Is minic a bhíonn sé seo níos éasca toisc go soláthraíonn go leor creataí JavaScript crúcaí a cheadaíonn ceanntásca a shocrú ar gach iarratas.</p>\n<p>Ar dtús, ní mór duit an comhartha CSRF a fháil. Braitheann conas é sin a dhéanamh ar an bhfuil na socruithe: 'CSRF_USE_SESSIONS` agus:setting: CSRF_COOKIE_HTTPONLY cumasaithe nó nach bhfuil.</p>\n<section id=\"acquiring-the-token-if-csrf-use-sessions-and-csrf-cookie-httponly-are-false\">\n<span id=\"acquiring-csrf-token-from-cookie\"></span><h3>An comhartha a fháil má tá: socrú: CSRF_USE_SESSIONS agus:setting: CSRF_COOKIE_HTTPONLY <code class=\"docutils literal notranslate\">False</code><a class=\"heading-anchor\" href=\"#acquiring-the-token-if-csrf-use-sessions-and-csrf-cookie-httponly-are-false\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is é an fhoinse molta don chomhartha an fianán csrftoken`, a shocrófar má chuir tú cosaint CSRF ar chumas do do thuairimí mar a leagtar amach thuas.</p>\n<p>Ainmnítear “csrftoken`` ar an bhfianán comhartha CSRF de réir réamhshocraithe, ach is féidir leat ainm na fianán a rialú tríd an socrú:setting: CSRF_COOKIE_NAME.</p>\n<p>Is féidir leat an comhartha a fháil mar seo:</p>\n<div class=\"code-block\" data-language=\"javascript\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">JavaScript</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=\"JavaScript code\"><code><span class=\"kd\">function</span> <span class=\"nx\">getCookie</span><span class=\"p\">(</span><span class=\"nx\">name</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n    <span class=\"kd\">let</span> <span class=\"nx\">cookieValue</span> <span class=\"o\">=</span> <span class=\"kc\">null</span><span class=\"p\">;</span>\n    <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"nb\">document</span><span class=\"p\">.</span><span class=\"nx\">cookie</span> <span class=\"o\">&amp;&amp;</span> <span class=\"nb\">document</span><span class=\"p\">.</span><span class=\"nx\">cookie</span> <span class=\"o\">!==</span> <span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n        <span class=\"kd\">const</span> <span class=\"nx\">cookies</span> <span class=\"o\">=</span> <span class=\"nb\">document</span><span class=\"p\">.</span><span class=\"nx\">cookie</span><span class=\"p\">.</span><span class=\"nx\">split</span><span class=\"p\">(</span><span class=\"s1\">&#39;;&#39;</span><span class=\"p\">);</span>\n        <span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">let</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mf\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\">&lt;</span> <span class=\"nx\">cookies</span><span class=\"p\">.</span><span class=\"nx\">length</span><span class=\"p\">;</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n            <span class=\"kd\">const</span> <span class=\"nx\">cookie</span> <span class=\"o\">=</span> <span class=\"nx\">cookies</span><span class=\"p\">[</span><span class=\"nx\">i</span><span class=\"p\">].</span><span class=\"nx\">trim</span><span class=\"p\">();</span>\n            <span class=\"c1\">// Does this cookie string begin with the name we want?</span>\n            <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"nx\">cookie</span><span class=\"p\">.</span><span class=\"nx\">substring</span><span class=\"p\">(</span><span class=\"mf\">0</span><span class=\"p\">,</span> <span class=\"nx\">name</span><span class=\"p\">.</span><span class=\"nx\">length</span> <span class=\"o\">+</span> <span class=\"mf\">1</span><span class=\"p\">)</span> <span class=\"o\">===</span> <span class=\"p\">(</span><span class=\"nx\">name</span> <span class=\"o\">+</span> <span class=\"s1\">&#39;=&#39;</span><span class=\"p\">))</span> <span class=\"p\">{</span>\n                <span class=\"nx\">cookieValue</span> <span class=\"o\">=</span> <span class=\"nb\">decodeURIComponent</span><span class=\"p\">(</span><span class=\"nx\">cookie</span><span class=\"p\">.</span><span class=\"nx\">substring</span><span class=\"p\">(</span><span class=\"nx\">name</span><span class=\"p\">.</span><span class=\"nx\">length</span> <span class=\"o\">+</span> <span class=\"mf\">1</span><span class=\"p\">));</span>\n                <span class=\"k\">break</span><span class=\"p\">;</span>\n            <span class=\"p\">}</span>\n        <span class=\"p\">}</span>\n    <span class=\"p\">}</span>\n    <span class=\"k\">return</span> <span class=\"nx\">cookieValue</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n<span class=\"kd\">const</span> <span class=\"nx\">csrftoken</span> <span class=\"o\">=</span> <span class=\"nx\">getCookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;csrftoken&#39;</span><span class=\"p\">);</span>\n</code></pre></div>\n<p>D'fhéadfaí an cód thuas a shimpliú trí úsáid a bhaint as an leabharlann <a class=\"reference external\" href=\"https://github.com/js-cookie/js-cookie/\">JavaScript Cookie</a> chun <code class=\"docutils literal notranslate\">getCookie</code> a chur in ionad:</p>\n<div class=\"code-block\" data-language=\"javascript\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">JavaScript</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=\"JavaScript code\"><code><span class=\"kd\">const</span> <span class=\"nx\">csrftoken</span> <span class=\"o\">=</span> <span class=\"nx\">Cookies</span><span class=\"p\">.</span><span class=\"nx\">get</span><span class=\"p\">(</span><span class=\"s1\">&#39;csrftoken&#39;</span><span class=\"p\">);</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Tá an comhartha CSRF i láthair sa DOM i bhfoirm masctha freisin, ach amháin má chuirtear san áireamh go sainráite ag baint úsáidea:ttag: csrf_token i dteimpléad. Tá an comhartha canónach, neamhchumtha sa fhianán. Glacfaidh an: Class: ~django.middleware.csrf.csrfViewMiddleware ceachtar acu. Mar sin féin, d'fhonn cosaint a dhéanamh ar ionsaithe <a class=\"reference external\" href=\"https://www.breachattack.com/\">BREACH</a>, moltar comhartha masctha a úsáid.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Warning</p>\n<p>Mura bhfuil teimpléad á rindreáil ag d'amharc ina bhfuil an clib teimpléad:ttag: csrf_token, b'fhéidir nach socraíonn Django an fianán comhartha CSRF. Tá sé seo coitianta i gcásanna ina gcuirtear foirmeacha go dinimiciúil leis an leathanach. Chun aghaidh a thabhairt ar an gcás seo, soláthraíonn Django maisitheoir amharc a chuireann iallach ar an bhfianán a shocrú: :func: ~django.views.decorators.csrf.ensure_csrf_cookie.</p>\n</aside>\n</section>\n<section id=\"acquiring-the-token-if-csrf-use-sessions-or-csrf-cookie-httponly-is-true\">\n<span id=\"acquiring-csrf-token-from-html\"></span><h3>An comhartha a fháil más:socrú: CSRF_USE_SESSIONS nó:setting: CSRF_COOKIE_HTTPONLY <code class=\"docutils literal notranslate\">True</code><a class=\"heading-anchor\" href=\"#acquiring-the-token-if-csrf-use-sessions-or-csrf-cookie-httponly-is-true\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Má ghníomhachtaí:setting: CSRF_USE_SESSIONS nó:setting: CSRF_COOKIE_HTTPONLY, ní mór duit an comhartha CSRF a áireamh i do HTML agus an comhartha ón DOM a léamh le JavaScript:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">csrf_token</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">script</span><span class=\"p\">&gt;</span>\n<span class=\"kd\">const</span> <span class=\"nx\">csrftoken</span> <span class=\"o\">=</span> <span class=\"nb\">document</span><span class=\"p\">.</span><span class=\"nx\">querySelector</span><span class=\"p\">(</span><span class=\"s1\">&#39;[name=csrfmiddlewaretoken]&#39;</span><span class=\"p\">).</span><span class=\"nx\">value</span><span class=\"p\">;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">script</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"setting-the-token-on-the-ajax-request\">\n<h3>An comhartha a shocrú ar an iarratas AJAX<a class=\"heading-anchor\" href=\"#setting-the-token-on-the-ajax-request\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Faoi dheireadh, beidh ort an ceanntásc a shocrú ar d'iarratas AJAX. Ag baint úsáide as an API <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>fetch () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>_:</p>\n<div class=\"code-block\" data-language=\"javascript\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">JavaScript</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=\"JavaScript code\"><code><span class=\"kd\">const</span> <span class=\"nx\">request</span> <span class=\"o\">=</span> <span class=\"ow\">new</span> <span class=\"nx\">Request</span><span class=\"p\">(</span>\n    <span class=\"cm\">/* URL */</span><span class=\"p\">,</span>\n    <span class=\"p\">{</span>\n        <span class=\"nx\">method</span><span class=\"o\">:</span> <span class=\"s1\">&#39;POST&#39;</span><span class=\"p\">,</span>\n        <span class=\"nx\">headers</span><span class=\"o\">:</span> <span class=\"p\">{</span><span class=\"s1\">&#39;X-CSRFToken&#39;</span><span class=\"o\">:</span> <span class=\"nx\">csrftoken</span><span class=\"p\">},</span>\n        <span class=\"nx\">mode</span><span class=\"o\">:</span> <span class=\"s1\">&#39;same-origin&#39;</span> <span class=\"c1\">// Do not send CSRF token to another domain.</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">);</span>\n<span class=\"nx\">fetch</span><span class=\"p\">(</span><span class=\"nx\">request</span><span class=\"p\">).</span><span class=\"nx\">then</span><span class=\"p\">(</span><span class=\"kd\">function</span><span class=\"p\">(</span><span class=\"nx\">response</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n    <span class=\"c1\">// ...</span>\n<span class=\"p\">});</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"using-csrf-protection-in-jinja2-templates\">\n<h2>Cosaint CSRF a úsáid i dteimpléid Jinja2<a class=\"heading-anchor\" href=\"#using-csrf-protection-in-jinja2-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django's:class: ~django.template.backends.jinja2.jinja2 cuireann cúltaca teimpléad <code class=\"docutils literal notranslate\">{{csrf_input}}</code> le comhthéacs na teimpléid go léir atá comhionann le <code class=\"docutils literal notranslate\">{% csrf_token%}</code> sa teanga teimpléid Django. Mar shampla:</p>\n<div class=\"code-block\" data-language=\"html+jinja\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html Jinja</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=\"Html Jinja code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">csrf_input</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</section>\n<section id=\"using-the-decorator-method\">\n<h2>An modh maisitheora a úsáid<a class=\"heading-anchor\" href=\"#using-the-decorator-method\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Seachas <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>csrfViewMiddleware` a chur leis mar chosaint blaincéid, is féidir leat an maisitheoir: func: ~django.views.decorators.csrf.csrf_protect a úsáid, a bhfuil an fheidhmiúlacht chéanna díreach aige, ar thuairimí áirithe a dteastaíonn an cosaint uathu. Caithfear é a úsáid**an bheath** ar thuairimí a chuireann an comhartha CSRF isteach san aschur, agus ar na tuairimí a ghlacann leis na sonraí foirme POST. (Is minic gurb iad seo an fheidhm radharc céanna, ach ní i gcónaí).</p>\n<p>Ní mholtar an maisitheoir a úsáid leis féin <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>, ós rud é má dhéanann tú dearmad é a úsáid, beidh poll slándála agat. Tá an straitéis 'crios agus brísea' chun an dá cheann a úsáid go breá, agus beidh lasbhreas íosta ann.</p>\n</section>\n<section id=\"handling-rejected-requests\">\n<span id=\"csrf-rejected-requests\"></span><h2>Iarrataí a dhiúltaithe<a class=\"heading-anchor\" href=\"#handling-rejected-requests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>De réir réamhshocraithe, seoltar freagra '403 Forbidden' chuig an úsáideoir má theipeann ar iarratas isteach ar na seiceálacha a dhéanann <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>CSRFViewMiddleware`. Níor cheart é seo a fheiceáil de ghnáth ach nuair a bhíonn fíorbhóideacht Iarratas Tras-Láithreáin ann, nó nuair nach bhfuil an comhartha CSRF san áireamh le foirm POST mar gheall ar earráid cláraithe.</p>\n<p>Níl an leathanach earráide an-chairdiúil, áfach, mar sin b'fhéidir gur mhaith leat do dhearcadh féin a sholáthar chun an riocht seo a láimhseáil. Chun seo a dhéanamh, socraigh an socrú: setting: CSRF_FAILURE_VIEW.</p>\n<p>&lt;django-security-logger&gt;Déantar teipeanna CSRF a logáil mar rabhaidh don logger: ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>django.security.csrf <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</section>\n<section id=\"using-csrf-protection-with-caching\">\n<span id=\"csrf-cache-page\"></span><h2>Cosaint CSRF a úsáid le caching<a class=\"heading-anchor\" href=\"#using-csrf-protection-with-caching\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Má úsáideann teimpléad an chlib teimpléad:ttag: csrf_token (nó tugtar bealach eile ar an bhfeidhm <code class=\"docutils literal notranslate\">get_token</code>), cuirfidh CSRFViewMiddleware` fianán agus ceannteideal <code class=\"docutils literal notranslate\">Vary: Cookie</code> leis an bhfreagra. Ciallaíonn sé seo go n-imrífidh an middleware go maith leis an middleware taisce má úsáidtear é mar a threoraítear (téann <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>UpdateCacheMiddleware` roimh gach meán-earraí eile).</p>\n<p>Mar sin féin, má úsáideann tú maisitheoirí taisce ar thuairimí aonair, ní bheidh an middleware CSRF in ann an ceannteideal Vary nó an fianán CSRF a shocrú fós, agus cuirfear an freagra a chosc gan ceachtar ceann amháin. Sa chás seo, ar aon tuairimí a éilíonn comhartha CSRF a chur isteach ba chóir duit an maisitheoir: func: django.views.decorators.csrf.csrf_protect a úsáid ar dtús:</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=\"nn\">django.views.decorators.cache</span> <span class=\"kn\">import</span> cache_page\n<span class=\"kn\">from</span> <span class=\"nn\">django.views.decorators.csrf</span> <span class=\"kn\">import</span> csrf_protect\n\n\n<span class=\"nd\">@cache_page</span><span class=\"p\">(</span><span class=\"mi\">60</span> <span class=\"o\">*</span> <span class=\"mi\">15</span><span class=\"p\">)</span>\n<span class=\"nd\">@csrf_protect</span>\n<span class=\"k\">def</span> <span class=\"nf\">my_view</span><span class=\"p\">(</span>request<span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>&lt;decorating-class-based-views&gt;Má tá tuairimí bunaithe ar rang-bhunaithe á úsáid agat, is féidir leat tagairt a thabhairt do:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Tuairimí rangbhunaithe a mhaisiú <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</section>\n<section id=\"testing-and-csrf-protection\">\n<h2>Tástáil agus cosaint CSRF<a class=\"heading-anchor\" href=\"#testing-and-csrf-protection\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>De ghnáth beidh an CSRFViewMiddleware 'ina bhac mór ar fheidhmeanna radhairc a thástáil, mar gheall ar an ngá atá leis an gcomhartha CSRF nach mór a sheoladh le gach iarratas POST. Ar an gcúis seo, modhnaíodh cliant HTTP Django le haghaidh tástálacha chun bratach a shocrú ar iarratais a mhaolann an middleware agus an maisitheoir csrf_protect` ionas nach dhiúltaíonn siad iarratais a thuilleadh. I ngach leith eile (m.sh. fianáin a sheoladh srl.), iompraíonn siad mar an gcéanna.</p>\n<p>Más mian leat, ar chúis éigin, * an cliant tástála seiceálacha CSRF a dhéanamh, is féidir leat sampla den chliant tástála a chruthú a fhorfheidhmíonn seiceálacha CSRF:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.test</span> <span class=\"kn\">import</span> Client\n<span class=\"gp\">&gt;&gt;&gt; </span>csrf_client <span class=\"o\">=</span> Client<span class=\"p\">(</span>enforce_csrf_checks<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"edge-cases\">\n<h2>Cásanna imeall<a class=\"heading-anchor\" href=\"#edge-cases\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is féidir go mbeadh riachtanais neamhghnácha ag tuairimí áirithe a chiallaíonn nach n-oireann siad don ghnáthphatrún Is féidir le roinnt fóntais a bheith úsáideach sna cásanna seo. Déantar cur síos ar na cásanna a d'fhéadfadh a bheith ag teastáil iontu sa chuid seo a leanas.</p>\n<section id=\"disabling-csrf-protection-for-just-a-few-views\">\n<h3>Cosaint CSRF a dhíchumasú le haghaidh ach cúpla tuairim<a class=\"heading-anchor\" href=\"#disabling-csrf-protection-for-just-a-few-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Éilíonn cosaint CSRF ar an gcuid is mó de na tuairimí, ach níl cúpla ceann acu.</p>\n<p>Réiteach: seachas an middleware a dhíchumasú agus csrf_protect` a chur i bhfeidhm ar na tuairimí go léir a theastaíonn uathu, cumasaigh an middleware agus úsáide:func: ~django.views.decorators.csrf.csrf_exempt.</p>\n</section>\n<section id=\"setting-the-token-when-csrfviewmiddleware-process-view-is-not-used\">\n<h3>An comhartha a shocrú nuair nach n-úsáidtear <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>CSRFViewMiddleware.process_view () ``<a class=\"heading-anchor\" href=\"#setting-the-token-when-csrfviewmiddleware-process-view-is-not-used\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tá cásanna ann nuair nach raibh CSRFViewMiddleware.process_view` rith sula ndéantar do radharc a reáchtáil - 404 agus 500 láimhseálaí, mar shampla - ach teastaíonn an comhartha CSRF uait fós i bhfoirm.</p>\n<p>Réiteach: úsáid: func: ~django.views.decorators.csrf.requires_csrf_token</p>\n</section>\n<section id=\"including-the-csrf-token-in-an-unprotected-view\">\n<h3>An comhartha CSRF san áireamh i radharc gan chosaint<a class=\"heading-anchor\" href=\"#including-the-csrf-token-in-an-unprotected-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>D'fhéadfadh go mbeadh roinnt tuairimí ann nach bhfuil gan chosaint agus a bhfuil díolmhaithe orthu ag csrf_exempt`, ach ní mór an comhartha CSRF a áireamh fós.</p>\n<p>Réiteach: úsáid: func: ~django.views.decorators.csrf.csrf_exempt ina dhiaidh sin: func: ~django.views.decorators.csrf.requires_csrf_token. (ie, ba chóir go mbeadh requires_csrf_token` an maisitheoir is istigh).</p>\n</section>\n<section id=\"protecting-a-view-for-only-one-path\">\n<h3>Radharc a chosaint le haghaidh cosán amháin amháin<a class=\"heading-anchor\" href=\"#protecting-a-view-for-only-one-path\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Teastaíonn cosaint CSRF ó dhearcadh faoi shraith amháin coinníollacha amháin, agus níor cheart dó é a bheith aige don chuid eile den am.</p>\n<p>Réiteach: úsáid: func: ~django.views.decorators.csrf.csrf_exempt don fheidhm amharc iomlán, agus:func: ~django.views.decorators.csrf.csrf_protect don chosán laistigh de dhíth a chosaint air. Sampla:</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=\"nn\">django.views.decorators.csrf</span> <span class=\"kn\">import</span> csrf_exempt<span class=\"p\">,</span> csrf_protect\n\n\n<span class=\"nd\">@csrf_exempt</span>\n<span class=\"k\">def</span> <span class=\"nf\">my_view</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    <span class=\"nd\">@csrf_protect</span>\n    <span class=\"k\">def</span> <span class=\"nf\">protected_path</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n        do_something<span class=\"p\">()</span>\n\n    <span class=\"k\">if</span> some_condition<span class=\"p\">():</span>\n        <span class=\"k\">return</span> protected_path<span class=\"p\">(</span>request<span class=\"p\">)</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        do_something_else<span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"protecting-a-page-that-uses-ajax-without-an-html-form\">\n<h3>Leathanach a chosaint a úsáideann AJAX gan foirm HTML<a class=\"heading-anchor\" href=\"#protecting-a-page-that-uses-ajax-without-an-html-form\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Déanann leathanach iarratas POST trí AJAX, agus níl foirm HTML ag an leathanach le a:ttag: csrf_token a chuirfeadh an fianán CSRF riachtanach a sheoladh.</p>\n<p>Réiteach: úsáid: func: ~django.views.decorators.csrf.ensure_csrf_cookie ar an radharc a sheolann an leathanach.</p>\n</section>\n</section>\n<section id=\"csrf-protection-in-reusable-applications\">\n<h2>Cosaint CSRF in iarratais in-athúsáidte<a class=\"heading-anchor\" href=\"#csrf-protection-in-reusable-applications\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Toisc go bhfuil sé indéanta don fhorbróir an CSRFViewMiddleware a mhúchadh, úsáideann gach tuairim ábhartha in aipeanna contrib an maisitheoir csrf_protect` chun slándáil na bhfeidhmchlár seo i gcoinne CSRF a chinntiú. Moltar go n-úsáideann forbróirí aipeanna in-athúsáidte eile a dteastaíonn na ráthaíochtaí céanna uathu an maisitheoir csrf_protect` ar a dtuairimí.</p>\n</section>","rootId":"how-to-use-django-s-csrf-protection","toc":[{"title":"Cosaint CSRF a úsáid le AJAX","anchor":"using-csrf-protection-with-ajax","children":[{"title":"An comhartha a fháil má tá: socrú: CSRF_USE_SESSIONS agus:setting: CSRF_COOKIE_HTTPONLY False","anchor":"acquiring-the-token-if-csrf-use-sessions-and-csrf-cookie-httponly-are-false","children":[]},{"title":"An comhartha a fháil más:socrú: CSRF_USE_SESSIONS nó:setting: CSRF_COOKIE_HTTPONLY True","anchor":"acquiring-the-token-if-csrf-use-sessions-or-csrf-cookie-httponly-is-true","children":[]},{"title":"An comhartha a shocrú ar an iarratas AJAX","anchor":"setting-the-token-on-the-ajax-request","children":[]}]},{"title":"Cosaint CSRF a úsáid i dteimpléid Jinja2","anchor":"using-csrf-protection-in-jinja2-templates","children":[]},{"title":"An modh maisitheora a úsáid","anchor":"using-the-decorator-method","children":[]},{"title":"Iarrataí a dhiúltaithe","anchor":"handling-rejected-requests","children":[]},{"title":"Cosaint CSRF a úsáid le caching","anchor":"using-csrf-protection-with-caching","children":[]},{"title":"Tástáil agus cosaint CSRF","anchor":"testing-and-csrf-protection","children":[]},{"title":"Cásanna imeall","anchor":"edge-cases","children":[{"title":"Cosaint CSRF a dhíchumasú le haghaidh ach cúpla tuairim","anchor":"disabling-csrf-protection-for-just-a-few-views","children":[]},{"title":"An comhartha a shocrú nuair nach n-úsáidtear ``CSRFViewMiddleware.process_view () ``","anchor":"setting-the-token-when-csrfviewmiddleware-process-view-is-not-used","children":[]},{"title":"An comhartha CSRF san áireamh i radharc gan chosaint","anchor":"including-the-csrf-token-in-an-unprotected-view","children":[]},{"title":"Radharc a chosaint le haghaidh cosán amháin amháin","anchor":"protecting-a-view-for-only-one-path","children":[]},{"title":"Leathanach a chosaint a úsáideann AJAX gan foirm HTML","anchor":"protecting-a-page-that-uses-ajax-without-an-html-form","children":[]}]},{"title":"Cosaint CSRF in iarratais in-athúsáidte","anchor":"csrf-protection-in-reusable-applications","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Treoracha conas","url":"/ga/6.0/howto/"}],"prev":{"docname":"howto/csp","title":"How to use Django's Content Security Policy","url":"/ga/6.0/howto/csp/"},"next":{"docname":"howto/custom-file-storage","title":"Conas rang stórála saincheaptha a scríobh","url":"/ga/6.0/howto/custom-file-storage/"},"formats":{"html":"/ga/6.0/howto/csrf/","markdown":"/ga/6.0/howto/csrf.md","json":"/ga/6.0/howto/csrf.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/howto/csrf.txt","official":"https://docs.djangoproject.com/ga/6.0/howto/csrf/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}