Defaults.Exposed

Defaults.ExposedPembaikan › Perlindungan clickjacking (X-Frame-Options)

Cara memperbaiki Perlindungan clickjacking (X-Frame-Options)

Arahan satu baris yang memberitahu pelayar untuk tidak membenarkan laman web lain memuat laman anda secara senyap di dalam mereka sendiri. Tanpanya, penipu boleh menyembunyikan halaman sebenar anda yang telah log masuk di belakang halaman palsu dan menipu pelanggan anda untuk mengklik perkara yang mereka tidak berniat — meluluskan pembayaran, menukar kata laluan, memberikan akses.

Kesimpulan untuk perniagaan anda: Penipu boleh secara tidak kelihatan membungkus laman web langsung anda di dalam yang palsu dan mencuri wang atau akses akaun dari pelanggan anda yang telah log masuk — dan kepada pelanggan ia kelihatan seperti laman anda yang melakukannya. Pembetulan adalah percuma dan mengambil masa pembangun kira-kira 15 minit; membiarkannya tidak diperbetulkan adalah jurang yang diketahui yang jenayah dan pembeli yang berhati-hati boleh kesan dalam beberapa saat.

Apakah kos yang boleh timbul

Mengapa ia penting. Ini adalah tetapan percuma satu baris yang mengambil masa beberapa minit untuk ditambah, dan ia menutup seluruh kelas penipuan yang ditujukan kepada pelanggan anda yang log masuk. Pada pemarkahan kami ia adalah semakan keselamatan web yang bernilai-mata-sebenar yang dinilai keparahan tinggi, kerana pengepala yang hilang meninggalkan lubang yang diketahui dan mudah-diperiksa yang jenayah automatik dan pembeli cari.

Apa ini, dalam bahasa mudah

Apabila seseorang melawati laman web anda, pelayar mereka juga boleh diberitahu untuk memuatkan laman anda di dalam laman web lain — seperti tetingkap kecil yang ditanam di dalam halaman yang lebih besar. Itu kedengaran tidak berbahaya, dan kadang-kadang ia tidak. Tetapi ia adalah mekanisme di sebalik serangan yang dipanggil clickjacking.

Inilah helahnya. Penipu membina halaman mereka sendiri dan secara senyap memuatkan laman web sebenar anda di dalamnya — tidak kelihatan, dibuat sepenuhnya telus. Kemudian mereka meletakkan kandungan mereka sendiri di atas: butang yang berkilat, “Mainkan video,” “Tuntut hadiah anda.” Pelanggan anda melihat halaman penyerang dan mengklik apa yang kelihatan seperti butang yang tidak berbahaya. Tetapi kerana laman sebenar anda sedang duduk secara tidak kelihatan di bawah kursor mereka, klik itu sebenarnya mendarat pada halaman anda — mengesahkan pembayaran, menukar kata laluan, meluluskan akses, menerima kebenaran. Pelanggan fikir mereka mengklik satu perkara; sebenarnya mereka mengklik yang lain, pada laman yang mereka percayai.

Perlindungan clickjacking adalah arahan pendek dan tidak kelihatan yang laman web anda hantar kepada pelayar setiap pengunjung yang berkata, secara berkesan:

“Jangan biarkan laman web lain memuatkan saya di dalam mereka. Jika ada yang cuba, tolak.”

Pelayar moden mematuhi ini secara automatik. Dengan ia dihidupkan, helah itu hanya tidak berfungsi — salinan laman anda yang ditanam menolak untuk dimuatkan. Tanpanya, laman anda boleh digunakan sebagai lapisan tersembunyi dalam penipuan, dan pelanggan yang terperangkap akan mengaitkan keseluruhan perkara dengan jenama anda, bukan jenama penyerang.

Apa yang ini boleh koskan anda

Ini adalah senario realistik dan harian. Kami tidak pernah menamakan perniagaan sebenar; ini adalah ilustrasi bagaimana jurang digunakan.

  1. “Pengesahan” yang tidak kelihatan. Pelanggan log masuk ke portal akaun anda dalam satu tab. Mereka mendarat pada halaman (dari iklan, e-mel, hasil carian) yang menjanjikan sesuatu yang menarik dan menunjukkan butang “Teruskan” yang besar. Tersembunyi di bawah butang itu adalah kawalan “Sahkan pindahan” atau “Tukar e-mel” sebenar anda, dimuatkan dari sesi log masuk mereka sendiri. Mereka mengklik “Teruskan” — dan tanpa menyedarinya meluluskan perubahan pada akaun sebenar mereka dengan anda. Bagi mereka, dan bagi pasukan sokongan anda, ia kelihatan seperti mereka yang melakukannya di laman anda.

  2. Rampasan tetapan. Penyerang membingkai halaman tetapan akaun anda dan melapisi permainan atau tinjauan yang tidak bersalah di atasnya. Beberapa klik di tempat yang betul secara senyap menukar tetapan — menambah e-mel penyerang sebagai alamat pemulihan, memberikan kebenaran kepada aplikasi, atau melumpuhkan amaran keselamatan. Akaun kini terjejas secara senyap, dan tiada yang kelihatan salah pada masa itu.

  3. Urusan perniagaan yang tertangguh. Pelanggan yang lebih besar menghantar soal selidik keselamatan standard mereka sebelum menandatangani. Satu baris bertanya sama ada laman anda menetapkan perlindungan anti-bingkai (X-Frame-Options / CSP frame-ancestors). Kenalan IT anda perlu menjawab “tidak,” dan perolehan berhenti sementara anda bergegas untuk membetulkan tetapan percuma 15 minit yang kini kelihatan seperti bendera merah di hadapan pembeli.

  4. Kempen jenama-sebagai-umpan. Kerana halaman sebenar dan dipercayai anda boleh ditanam, penyerang menggunakan log masuk atau checkout anda sebagai lapisan yang meyakinkan dalam kempen pancingan data yang lebih luas. Pelanggan yang terperangkap tidak menyalahkan penyerang yang gelap — mereka mengingatinya sebagai masa “laman anda” membiarkan mereka ditipu.

  5. Tanda audit. Imbasan penanggung insurans, atau juruaudit yang menyemak postur keselamatan anda, menyenaraikan perlindungan clickjacking yang hilang antara penemuan. Ia adalah item kebersihan asas teks; mendapatkannya ditandakan menandakan perlindungan percuma dan mudah tidak wujud — yang memberi warna bagaimana keselamatan anda yang selebihnya dinilai.

Benang melalui semua ini: kerosakan mendarat pada pelanggan sebenar yang log masuk yang melakukan sesuatu yang mereka tidak berniat — dan ia membawa nama anda, bukan penyerang.

Apa yang ia sebenarnya

Apabila pelayar meminta laman anda untuk halaman, pelayan anda menghantar semula halaman ditambah beberapa “pengepala” tidak kelihatan — arahan tambahan yang pelayar baca tetapi pengunjung tidak pernah lihat. Perlindungan clickjacking dihantar melalui pengepala ini. Terdapat dua, dan semakan kami lulus jika salah satu hadir:

1. Pengepala yang lebih lama — X-Frame-Options:

X-Frame-Options: SAMEORIGIN

Ini adalah kawalan yang telah lama wujud dan disokong secara meluas. Ia mengambil salah satu daripada dua nilai praktikal:

2. Pengepala moden — Content-Security-Policy frame-ancestors:

Content-Security-Policy: frame-ancestors 'self';

Ini adalah kawalan yang lebih baharu dan lebih fleksibel dan yang ditunjukkan oleh standard semasa. Ia melakukan kerja yang sama tetapi membolehkan anda lebih tepat tentang siapa yang boleh menanam anda:

Apa yang “baik” kelihatan

Persediaan paling kuat menggunakan kedua-duanya: frame-ancestors untuk pelayar moden (dan untuk ketepatan menamakan pembenam yang dibenarkan) dan X-Frame-Options: SAMEORIGIN sebagai pengganti untuk klien yang lebih lama. Semakan kami berpuas hati dengan salah satu sahaja — tetapi kerana kedua-duanya percuma dan mengambil masa beberapa minit yang sama, tiada sebab untuk tidak menetapkan kedua-duanya.

Satu butiran penting yang pembangun anda harus tahu: pengepala Content-Security-Policy-Report-Only tidak menguatkuasakan apa-apa — ia hanya melaporkan. Jika anda mahu perlindungan clickjacking benar-benar berkuat kuasa, ia mesti datang dari pengepala yang menguatkuasakan (CSP normal dengan frame-ancestors, atau X-Frame-Options), bukan yang hanya-laporan.

Cara membetulkannya (percuma, ~15 minit)

Berikan bahagian ini kepada sesiapa yang menjalankan laman web anda — orang IT, pembangun web, atau sokongan pengehosan anda. Pembetulan adalah percuma. Ia adalah satu atau dua pengepala respons, atau peraturan dalam CDN anda. Tiada yang perlu dibeli.

Semakan lulus apabila sama ada pengepala X-Frame-Options (ditetapkan kepada DENY atau SAMEORIGIN) atau arahan CSP frame-ancestors hadir. Persediaan tali-pinggang-dan-penyangga yang disyorkan menambah kedua-duanya.

Langkah 1 — Putuskan betapa ketatnya

Langkah 2 — Tambah pengepala (pilih platform anda)

Nginx — dalam blok server anda:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header Content-Security-Policy "frame-ancestors 'self';" always;

Apache — pastikan mod_headers diaktifkan, kemudian dalam hos maya anda:

Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self';"

Microsoft IIS — dalam web.config dalam <customHeaders>:

<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Content-Security-Policy" value="frame-ancestors 'self';" />

Cloudflare (atau CDN yang serupa): pergi ke Rules → Transform Rules → Modify Response Header, dan tambah dua peraturan yang menetapkan X-Frame-Options kepada SAMEORIGIN dan Content-Security-Policy kepada frame-ancestors 'self'; pada semua respons. Ini adalah laluan termudah jika anda tidak mempunyai akses pelayan langsung.

Sudah menghantar Content-Security-Policy untuk sebab lain? Jangan cipta pengepala CSP kedua — tambah frame-ancestors ke dalam dasar sedia ada anda. Dua pengepala CSP boleh bercanggah.

Pembina laman web (Squarespace, Wix, Shopify dan yang serupa): platform ini selalunya menetapkan perlindungan anti-bingkai untuk anda, jadi anda mungkin sudah lulus tanpa perlu melakukan apa-apa. Jika semakan kami menandakannya, kawalan biasanya berada dalam tetapan keselamatan platform, atau anda menambahnya pada CDN yang duduk di hadapan laman. (Nota: Google Workspace dan Microsoft 365 menggerakkan e-mel anda, bukan laman web anda — pengepala ini ditetapkan di mana sahaja laman awam anda sebenarnya berada, bukan dalam admin Workspace/365.)

Langkah 3 — Muat semula dan sahkan

Muat semula pelayan web atau paparkan peraturan CDN, kemudian muatkan laman langsung anda dan semak pengepala respons — alat pembangun pelayar → tab Rangkaian → klik permintaan halaman → Pengepala Respons, atau mana-mana alat semakan pengepala percuma. Sahkan pengepala muncul pada respons halaman sebenar, bukan hanya halaman utama. Kemudian jalankan semula semakan.

Kesilapan biasa

Soalan Lazim

Saya bukan orang teknikal — bolehkah saya menangani perkara ini sendiri?

Anda tidak perlu melakukan bahagian teknikal. Ia adalah tetapan tunggal yang ditambah kepada pelayan laman web atau CDN anda, dan mana-mana pembangun web atau pembekal IT boleh menambahnya dalam beberapa minit. Berikan bahagian 'Cara membetulkannya' di bawah kepada mereka — ia memberitahu mereka dengan tepat apa yang perlu ditambah. Pembetulan adalah percuma; kami hanya mengenakan bayaran jika anda ingin kami terus memantau bahawa ia kekal wujud.

Adakah ini akan menghentikan laman saya sendiri, atau rakan kongsi yang sah, daripada memaparkan halaman saya?

Hanya jika anda menetapkannya terlalu ketat. Tetapan biasa ('SAMEORIGIN', atau 'frame-ancestors self') masih membenarkan laman web anda sendiri menanam halamannya sendiri secara normal — ia hanya menyekat laman luar. Jika rakan kongsi yang tulen perlu menanam satu halaman khusus anda, pembangun anda boleh membenarkan sumber tunggal itu sementara masih menyekat semua orang lain.

Kami adalah perniagaan kecil — adakah sesiapa akan benar-benar bersusah payah menyasari kami?

Serangan ini dijalankan secara pukal oleh alat automatik, bukan dipilih tangan. Laman yang lebih kecil sering diserang dengan tepat kerana mereka adalah yang tiada perlindungan asas seperti ini. Penyerang tidak perlu tahu siapa anda — mereka hanya memerlukan laman anda boleh ditanam. Menutup jurang tidak memerlukan kos apa-apa kepada anda.

Apa yang 'baik' sebenarnya kelihatan?

Sama ada pengepala X-Frame-Options yang ditetapkan kepada SAMEORIGIN (atau DENY), atau Content-Security-Policy dengan arahan frame-ancestors — sebaik-baiknya kedua-duanya. Semakan kami lulus jika salah satu hadir. Kawalan moden yang lebih fleksibel ialah frame-ancestors; X-Frame-Options adalah pengepala yang lebih lama yang masih merangkumi beberapa pelayar warisan, jadi persediaan tali-pinggang-dan-penyangga menggunakan kedua-duanya.

Bukankah ini sama dengan kunci SSL atau HTTPS?

Tidak — mereka melindungi terhadap perkara yang sama sekali berbeza. HTTPS menyulitkan sambungan supaya tiada siapa dapat membacanya dalam transit. Perlindungan clickjacking menghalang halaman anda daripada dimuatkan di dalam laman orang lain langsung. Anda boleh mempunyai sijil yang sempurna dan masih terbuka luas kepada clickjacking. Mereka adalah semakan berasingan dan anda mahu kedua-duanya.

Jika kami tidak membetulkannya, adakah ia menurunkan gred kami?

Ya. Ini adalah semakan keselamatan web yang dinilai, bukan maklumat — pengepala yang hilang merugikan mata dan dinilai keparahan tinggi, kerana ia secara langsung mendedahkan pelanggan yang log masuk anda kepada penipuan. Ia juga merupakan salah satu mata yang paling murah untuk dipulihkan: satu pengepala percuma, kira-kira 15 minit masa pembangun.