Alat pembangun · HTML WYSIWYG editor
Sanitizing Tampal HTML: Perkara yang Perlu Dilucutkan Sebelum Ia Mencapai CMS atau E-mel Anda
· Bagaimana ia berfungsi
html keselamatan pembersihan teks
Menjelaskan perkara yang dilakukan oleh HTML sanitiser, daripada teg dan atribut tersenarai yang dibenarkan kepada skrip yang dialih keluar dan URL yang dineutralkan, dan cara memeriksa markup terlebih dahulu menjadikan peraturan sanitiser lebih mudah ditulis.
Coretan yang ditampal yang membawa onclick — dibuka dengan risiko tersembunyi dalam input teks kaya
Sauh yang ditampal boleh menyembunyikan onclick di sebelah destinasi yang tidak bersalah. ToolAcre menggunakan huruf kecil setiap nama atribut dan sahaja menyimpan atribut yang disenaraikan secara eksplisit untuk elemen yang diterima, jadi onclick hilang walaupun apabila sarungnya diubah. Laporan pengalihan keluar mengenal pasti pengendali acara itu dan bukannya membentangkan sumber tidak berubah secara senyap.
Sempadan ini beroperasi sebelum tampal kaya dimasukkan, apabila sumber kembali ke mod visual, sebelum penyalinan, sebelum pengekstrakan teks biasa dan sekali lagi semasa membina dokumen pratonton. Pengulangan mengurangkan pintasan tidak sengaja antara tindakan, tetapi projek itu masih enggan memanggil tokenizer tulisan tangan sebagai penapis XSS tujuan umum.
Mengapa senarai dibenarkan mengalahkan senarai sekat — menerangkan bahawa menamakan perkara yang dibenarkan adalah lebih selamat daripada cuba menyenaraikan setiap binaan berbahaya
Senarai dibenarkan bermula dengan menamakan struktur yang dibenarkan: perenggan, tajuk, elemen sebaris semantik, senarai, senarai penerangan, petikan, elemen seperti kod dan penambat. Pembalut biasa yang tidak diketahui kehilangan tegnya semasa mengekalkan teks. Bekas berbahaya seperti skrip, gaya, iframe, borang, SVG atau MathML juga kehilangan kandungannya.
Senarai sekat perlu menjangka setiap pembinaan berbahaya atau tidak disokong. Senarai yang dibenarkan menolak perkara yang tidak difahaminya. Itu adalah pilihan yang kukuh untuk keluaran terkurung satu editor, namun ia tetap dibatasi oleh tokenizernya. Pemulihan ralat HTML5 Pelayar boleh menghasilkan pepohon yang berbeza daripada penghurai yang lebih kecil apabila input yang salah bentuk dengan sengaja terlibat.
Teg, atribut dan skim URL — meliputi tiga lapisan penapis sanitiser, dengan keputusan tipikal untuk setiap
Penapisan berlaku pada tiga lapisan. Elemen menentukan perbendaharaan kata struktur. Atribut per-elemen sahaja membenarkan beberapa nilai seperti pautan href dan tajuk, petikan petikan, tajuk singkatan dan mula dan jenis senarai tersusun. URL pemeriksaan kemudian menyahkod entiti, jalur kawalan dan ruang kosong daripada probe dan menyemak skema yang terhasil.
Skim yang diterima ialah http, https, mailto, tel dan ftp, serta borang relatif tanpa skema yang jelas. JavaScript, data, fail, gumpalan, vbscript dan tentang contoh ditolak dalam ujian. Pautan yang masih hidup mendapat nilai perhubungan, tetapi penambahan itu bukan pengganti dasar destinasi atau semakan pautan.
Gaya: jalur, benarkan atau tulis semula — membincangkan pengendalian gaya sebaris dan sebab banyak sistem menggugurkannya sepenuhnya
Atribut gaya dialih keluar secara borong. Modul ini tidak cuba menghuraikan pengisytiharan, mengekalkan subset yang selamat atau menulis semula token reka bentuk. Dasar itu mengalih keluar penampilan yang disalin dan permukaan permintaan berasaskan CSS bersama-sama. Atribut kelas, id dan data juga hilang, menghasilkan penanda mudah alih tetapi kurang ekspresif dengan sengaja.
Sistem dengan keperluan gaya tulen memerlukan dasar semakan yang berbeza. Menambah gaya pada senarai yang dibenarkan ini tanpa CSS sanitizer akan mengubah permukaan keselamatannya dengan ketara. Pelaksanaan semasa mengelakkan masalah itu daripada mendakwa menyelesaikan CSS keselamatan untuk serpihan musuh yang sewenang-wenangnya.
Contoh yang berjaya: dapatkan peraturan daripada senarai kebenaran yang didokumenkan ToolAcre, bukan lekapan khusus Word
Mulakan dengan `<div class="WordSection"><p style="color:red" onclick="x()">Notice <strong>today</strong></p></div>`. Div dibuka, kelas dan gaya tidak dapat bertahan, onclick dialih keluar dan perenggan serta elemen kuat kekal. Hasilnya mengikut dasar generik tanpa menegaskan aplikasi yang menghasilkan pembalut.
Tambah javascript href dan blok skrip. Sauh menyimpan kata-katanya yang kelihatan tetapi kehilangan href; skrip dan badan hilang. Baca sebab yang dilaporkan. Latihan ini membantu menentukan dasar pelayan, tetapi menyalin subset tepat ToolAcre secara membuta tuli mungkin mengetepikan elemen yang diperlukan oleh aplikasi anda atau membenarkan URL yang dilarang oleh model ancaman anda.
Pembersihan bahagian pelayan berbanding bahagian pelanggan — menerangkan sebab pelayan mesti membersihkan walaupun pelayar sudah melakukannya
Penapisan pelanggan meningkatkan penggubalan tempatan tetapi tidak boleh dipercayai oleh pelayan yang menerima permintaan dikawal pengguna. Penyerang boleh memintas halaman, memanggil titik akhir secara langsung atau mengeksploitasi perbezaan penghurai. Pelayan mesti menghuraikan dan membersihkan sekali lagi dengan pelaksanaan HTML5-sedar yang dikonfigurasikan untuk konteks pemaparannya.
Pengekodan output kekal berasingan juga. HTML dimaksudkan sebagai teks mesti dilepaskan oleh templat dan bukannya disisipkan sebagai penanda. Serpihan yang sengaja dipaparkan sebagai HTML memerlukan sanitasi sebelum storan atau pengeluaran mengikut seni bina. Pratonton kotak pasir sahaja membuktikan bahawa pratonton ini tidak memberikan skrip, borang atau akses asal yang sama.
Perkara yang diliputi oleh alat ini — penapisan output editor sempit, bukan pembersihan input bermusuhan umum
ToolAcre menapis permukaan keluarannya sendiri, bertentangan dengan dakwaan buku kerja bahawa ia hanyalah alat pemeriksaan. Pembetulan yang tepat adalah lebih sempit: ia bukan pembersih XSS tujuan umum untuk input bermusuhan sewenang-wenangnya. Sumber mengatakan ini secara eksplisit dan mendokumenkan perbezaan penghurai yang mungkin.
Iframe adalah pertahanan secara mendalam untuk memaparkan dalam ToolAcre. Atribut kotak pasir kosongnya tidak memberikan pelaksanaan skrip, penyerahan borang atau akses asal yang sama dan dasar perujuk ialah tanpa perujuk. Sebaik sahaja HTML disalin ke tempat lain, bingkai itu tidak lagi melindunginya. Keselamatan penerbitan tergolong dalam sistem penerima.
Bawa pulang: periksa secara setempat, bersihkan pada pelayan — meringkaskan aliran kerja dan cara editor membantu anda melihat perkara yang akan dihadapi oleh pembersih
Periksa secara setempat, bersihkan pada pelayan dan buat mengikut konteks. Itu adalah tiga langkah yang berbeza. ToolAcre membantu mendedahkan bagasi yang ditampal dan menawarkan subset draf konservatif, manakala notis pengalihan keluar menjadikan kesan dasar kelihatan sebelum serpihan mencapai CMS atau aliran kerja e-mel.
Jangan pasarkan pratonton yang berjaya sebagai bukti terhadap XSS. Gunakan muatan ujian sahaja dalam kandungan pakai buang, simpan sumber mentah secara berasingan apabila penyiasatan penting, dan sahkan sanitasi destinasi secara bebas. Tuntutan keselamatan harus berhenti tepat di tempat kod dan sempadan pemaparan berhenti.