Mencegah website ditampilkan dalam iFrame
Pertanyaan yang masuk kali ini mengenai trik ISP dan operator seluler yang akan menampilkan halaman website dalam frame (bingkai). Jadi pada bagian tertentu – biasanya atas dan bawah – akan muncul iklan atau informasi yang berhubungan dengan penyedia layanan internet. Yang saya tahu saat ini mungkin diterapkan oleh XL Axiata dan Indosat Ooredoo.
Ada beberapa solusi yang bisa kita coba. Saya mulai dari sisi klien dulu dengan memanfaatkan JavaScript, cocok kalau anda tidak memiliki akses kedalam servernya. Kode berikut anda muat pada setiap halaman tentunya.
if (top.location != location) {
top.location = self.location;
}
Yang dilakukan oleh browser pengunjung nanti akan redirect dari halaman yang disisipkan dalam iFrame ke halaman aslinya.
Metode berikutnya lebih ampuh lagi katanya, jadi elemen selain apa yang ada aslinya pada website akan dikumpulkan menggunakan CSS:
<style id="antiClickjack">body{display:none !important;}</style>
Kemudian dihapus dengan JavaScript:
<script type="text/javascript">
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>
Sumber: https://www.codemagi.com/blog/post/194
Alternatifnya anda perlu akses ke web servernya atau cukup .htaccess
. Kemudian menambahkan konfigurasi header HTTP X-Frame-Options
dengan parameter berikut:
- Hanya diperbolehkan memuat halaman dalam frame dengan url yang sama.
X-Frame-Options: SAMEORIGIN
- Tidak diperbolehkan sama sekali membuka halaman situs dalam frame.
X-Frame-Options: DENY
Adanya header ini akan membuat browser hanya akan merender halaman iframe tanpa halaman website anda. Mungkin ini tidak ideal.
Untuk XFO mulai digantikan oleh Content-Security-Policy
yang sama – sama header HTTPnya. Jadi browser modern akan memanfaatkan CSP untuk kedepannya. Nah untuk menghentikan iFrame anda bisa menambahkan kode berikut:
Content-Security-Policy: frame-ancestors 'none'
Kalau dilihat hasilnya maka akan lebih menggunakan yang JavaScript karena akan mengalihkan traffic pengunjung. Sedangkan memanfaatkan header HTTP maka akan berhenti di iFramenya.
salam kenal, saya mau bertanya, mungkin berbeda dengan artikel ini, tapi ada sangkut pautnya masalah iframe..
begini, misal blog a nge iframe ke blog b pada sebuah url post di blog b, nah bisa tampil hasil iframe nya di blog a, tapi kalau ada user yg mau buka url post pada blog b itu, nanti langsung redirek ke homepage. Bagaimana solusinya?
Ditunggu Jawabannya..
Terima Kasih
Hmm… ini sempat saya cari – cari apa ada solusinya mas, lewat sisi web server. Tampaknya antara ilmu saya masih cetek atau memang tidak ada solusi yang diinginkan. 🙁
Mohon maaf belum bisa membantu. Ini soalnya harus ngenalin apakah websitenya dimasukkan iframe dan kemudian diredirect. Mungkin pakai JavaScript bisa.
kalau seandainya kita ingin memasukkan sebuah web lain ke web kita dengan iframe, tapi ternyata web yang kita ingin ternyata pakai script lock iframe gini, apakah masih tetep bisa kita memaksa untuk tetap memasang web yang sudah terlock tersebut dengan cara lain?