{"title":"Perlindungan clickjacking","version":"3.1","locale":"id","docname":"ref/clickjacking","url":"/id/3.1/ref/clickjacking/","canonical":"https://djangodocs.dev/id/3.1/ref/clickjacking/","summary":"Middleware clickjacking dan penghias menyediakan perlindungan mudah-digunakan terhadap clickjacking . Serangan jenis ini muncul ketika sebuah situs berbahaya…","html":"<span id=\"clickjacking-protection\"></span><h1>Perlindungan clickjacking<a class=\"heading-anchor\" href=\"#module-django.middleware.clickjacking\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Middleware clickjacking dan penghias menyediakan perlindungan mudah-digunakan terhadap <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/Clickjacking\">clickjacking</a>. Serangan jenis ini muncul ketika sebuah situs berbahaya memperdaya pengguna mengklik pada unsur tersembunyi dari situ selain yang mereka telah muat di kerangka tersembunyi atau iframe.</p>\n<section id=\"an-example-of-clickjacking\">\n<h2>Sebuah contoh dari clickjacking<a class=\"heading-anchor\" href=\"#an-example-of-clickjacking\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Andaikan sebuah toko daring mempunyai sebuah halaman dimana pengguna masuk dapat mengklik &quot;Buy Now&quot; untuk membeli sebuah barang. Seorang pengguna telah memilih untuk tetap masuk kedalam toko sepanjang waktu untuk kenyamanan. Seorang penyerang situs mungkin membuat sebuah tombol &quot;I Like Ponies&quot; pada satu dari halaman mereka sendiri, dan memuat halaman toko di iframe transparan sehingga tombol &quot;Buy Now&quot; tidak terlihat melapisi pada tombol &quot;I Like Ponies&quot;. Jika pengguna mengunjungi situ spenyerang, mengklik &quot;I Like Ponies&quot; akan menyebabkan klik tidak sengaja pada tombol &quot;Buy Now&quot; dan pembelian tidak diketahui dari barang.</p>\n</section>\n<section id=\"preventing-clickjacking\">\n<span id=\"clickjacking-prevention\"></span><h2>Mencegah clickjacking<a class=\"heading-anchor\" href=\"#preventing-clickjacking\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Permban modern menghargai kepala HTTP <a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\">X-Frame-Options</a> yang menunjukkan apakah atau tidak sumber daya diizinkan memuat dalam sebuah kerangka atau iframe. Jika tanggapan mengandung kepala dengan sebuah nilai dari <code class=\"docutils literal notranslate\"><span class=\"pre\">SAMEORIGIN</span></code> kemudian peramban akan hanya memuat sumber daya di sebuah ekrangka jika permintaan berasal dari situ sama. Jika kepala disetel menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">DENY</span></code> kemudian peramban akan memblok sumber daya dari memuat dalam sebuah kerangka tidak peduli situs mana membuat permintaan.</p>\n<p>Django menyediakan sedikit cara untuk menyertakan kepala ini dalam tanggapan dari situs anda:</p>\n<ol class=\"arabic simple\">\n<li><p>Sebuah middleware yang mensetel kepala dalam semua tanggapan.</p></li>\n<li><p>Sekumpulan dari penghias tampilan yang dapat digunakan untuk menimpa middleware atau untuk hanya menyetel kepala untuk tampilan tertentu.</p></li>\n</ol>\n<p>Kepala HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code> akan hanya disetel dengan middleware atau penghias tampilan jika itu belum hadir di tanggapan.</p>\n</section>\n<section id=\"how-to-use-it\">\n<h2>Bagaimana menggunakannya<a class=\"heading-anchor\" href=\"#how-to-use-it\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"setting-x-frame-options-for-all-responses\">\n<h3>Megnatur <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code> untuk semua tanggapan<a class=\"heading-anchor\" href=\"#setting-x-frame-options-for-all-responses\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Untuk menyetel nilai <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code> untuk semua tanggapan di situs anda, taruh <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.middleware.clickjacking.XFrameOptionsMiddleware'</span></code> pada <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>:</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=\"n\">MIDDLEWARE</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"o\">...</span>\n    <span class=\"s1\">&#39;django.middleware.clickjacking.XFrameOptionsMiddleware&#39;</span><span class=\"p\">,</span>\n    <span class=\"o\">...</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Middleware diadakan di berkas pengaturan dibangkitkan oleh <a class=\"reference internal\" href=\"/id/3.1/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a>.</p>\n<p>By default, the middleware will set the <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code> header to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">DENY</span></code> for every outgoing <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code>. If you want any other value for\nthis header instead, set the <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-X_FRAME_OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">X_FRAME_OPTIONS</span></code></a> setting:</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=\"n\">X_FRAME_OPTIONS</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;SAMEORIGIN&#39;</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"3.0\">\n<p class=\"version-note-title\">Changed in Django 3.0</p><p>Nilai awalan dari pengaturan <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-X_FRAME_OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">X_FRAME_OPTIONS</span></code></a> telah dirubah dari <code class=\"docutils literal notranslate\"><span class=\"pre\">SAMEORIGIN</span></code> menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">DENY</span></code>.</p>\n</aside>\n<p>Ketika menggunakan middleware ada mungkin beberapa tampilan dimana dan <em>tidak</em> ingin menyetel kepala <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code>. Untuk kasus-kasus tersebut, anda dapat menggunakan sebuah tampilan penghias yang memeribtahu middleware tidak menyetel kepala:</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.clickjacking</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">xframe_options_exempt</span>\n\n<span class=\"nd\">@xframe_options_exempt</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">ok_to_load_in_a_frame</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=\"s2\">&quot;This page is safe to load in a frame on any site.&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Jika anda ingin mengajukan sebuah formulir atau mengakses sebuah kue sesi dalam sebuah kerangka atau iframe, anda mungkin butuh merubah pengaturan <a class=\"reference internal\" href=\"/id/3.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> or <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-SESSION_COOKIE_SAMESITE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_SAMESITE</span></code></a>.</p>\n</aside>\n</section>\n<section id=\"setting-x-frame-options-per-view\">\n<h3>Mengatur <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code> per tampilan<a class=\"heading-anchor\" href=\"#setting-x-frame-options-per-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Untuk menyetel kepala <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code> pada dasar pertampilan, Django menyediakan penghias ini:</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.clickjacking</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">xframe_options_deny</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.clickjacking</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">xframe_options_sameorigin</span>\n\n<span class=\"nd\">@xframe_options_deny</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">view_one</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=\"s2\">&quot;I won&#39;t display in any frame!&quot;</span><span class=\"p\">)</span>\n\n<span class=\"nd\">@xframe_options_sameorigin</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">view_two</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=\"s2\">&quot;Display in a frame if it&#39;s from the same origin as me.&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Catat bahwa anda dapat menggunakan penghias di penghubungan dengan middleware. Gunakan penghias menimpa middleware.</p>\n</section>\n</section>\n<section id=\"limitations\">\n<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>Kepala <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code> akan hanya melindungi terhadap clickjacking di peramban modern. Peramban terlama akan secara diam mengabaikan kepala dan butuh <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/Clickjacking#Prevention\">other clickjacking prevention techniques</a>.</p>\n<section id=\"browsers-that-support-x-frame-options\">\n<h3>Peramban yang mendukung <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code><a class=\"heading-anchor\" href=\"#browsers-that-support-x-frame-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Internet Explorer 8+</p></li>\n<li><p>Edge</p></li>\n<li><p>Firefox 3.6.9+</p></li>\n<li><p>Opera 10.5+</p></li>\n<li><p>Safari 4+</p></li>\n<li><p>Chrome 4.1+</p></li>\n</ul>\n</section>\n<section id=\"see-also\">\n<h3>Lihat juga<a class=\"heading-anchor\" href=\"#see-also\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Sebuah <a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options#Browser_compatibility\">complete list</a> dari peramban mendukung <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Frame-Options</span></code></p>\n</section>\n</section>","rootId":"module-django.middleware.clickjacking","toc":[{"title":"Sebuah contoh dari clickjacking","anchor":"an-example-of-clickjacking","children":[]},{"title":"Mencegah clickjacking","anchor":"preventing-clickjacking","children":[]},{"title":"Bagaimana menggunakannya","anchor":"how-to-use-it","children":[{"title":"Megnatur X-Frame-Options untuk semua tanggapan","anchor":"setting-x-frame-options-for-all-responses","children":[]},{"title":"Mengatur X-Frame-Options per tampilan","anchor":"setting-x-frame-options-per-view","children":[]}]},{"title":"Batasan","anchor":"limitations","children":[{"title":"Peramban yang mendukung X-Frame-Options","anchor":"browsers-that-support-x-frame-options","children":[]},{"title":"Lihat juga","anchor":"see-also","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/3.1/ref/"}],"prev":{"docname":"ref/class-based-views/flattened-index","title":"Tampilan umum berdasarkan-kelas - meratakan indeks","url":"/id/3.1/ref/class-based-views/flattened-index/"},"next":{"docname":"ref/contrib/index","title":"Paket contrib","url":"/id/3.1/ref/contrib/"},"formats":{"html":"/id/3.1/ref/clickjacking/","markdown":"/id/3.1/ref/clickjacking.md","json":"/id/3.1/ref/clickjacking.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/ref/clickjacking.txt","official":"https://docs.djangoproject.com/id/3.1/ref/clickjacking/","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","pt-br","ko","es","el","pl"]}