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.

3 Comments

  1. 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

    1. 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.

  2. 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?

Tinggalkan Balasan ke Chandra Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *