Mengapa ekstensi Grammarly merusak website
- Dalam beberapa bulan terakhir, sering ada laporan bahwa layout website rusak secara aneh
- Penyebab masalah ini terungkap sebagai ekstensi browser Grammarly, dan untuk memastikannya, penulis juga memasangnya sendiri
Proses menemukan masalah
- Ekstensi Grammarly meminta izin berikut:
- akses ke data semua website
- menampilkan notifikasi
- akses ke tab browser
- Hasil eksperimen di Firefox menunjukkan bahwa Grammarly menyisipkan stylesheet miliknya sendiri ke halaman web
- Stylesheet ini tidak bisa dideteksi langsung dari halaman web (stylesheet tersembunyi)
- Bahkan melewati Content Security Policy
- Elemen
<grammarly-desktop-integration> juga disisipkan di dalam tag <html> (tujuannya tidak jelas)
Mengapa situs saya?
Tanggapan penulis
- Awalnya, penulis menggunakan Mutation Observer untuk mendeteksi elemen yang disisipkan Grammarly lalu menimpanya dengan style
!important
- Setelah itu, ia mengubah nama variabel CSS miliknya dari --rem menjadi --🤡 (emoji Unicode)
- Emoji valid digunakan sebagai nama variabel CSS
- Dengan cara ini, benturan dengan pengaturan global --rem dari Grammarly bisa dihindari
Inti masalah
- Sebagai ekstensi web, Grammarly memaksa penyisipan style global ke semua website
- Terutama, penggunaan nama variabel CSS umum seperti --rem sangat merugikan
- Di dalam kodenya sendiri mereka memakai nama kelas acak, tetapi sulit dipahami mengapa justru menerapkan penamaan umum secara global
- Bahkan tanpa benar-benar memakai ekstensi tersebut, kodenya tetap disisipkan
Kesimpulan dan usulan
- Penulis telah menghubungi Grammarly, dan meski ada respons cepat, ia tidak berhasil terhubung dengan pihak yang benar-benar memahami masalah teknis ini
- Solusi idealnya adalah Grammarly memakai nama variabel seperti --🤡, sehingga pengembang lain tetap bisa bebas menggunakan --rem
1 komentar
Opini Hacker News
Masalah ekstensi saya sedikit berbeda. Kami mendistribusikan ekstensi yang memudahkan perpindahan antar server proxy untuk pengujian geolokasi
Saat menyuntikkan skrip atau style ke halaman yang tidak diketahui, memberi namespace pada variabel adalah sopan santun minimal
Menakutkan melihat begitu banyak screen sharing dan rekaman yang secara default menyertakan gangguan hijau di semua situs web
Saya engineer di Grammarly Extension. Maaf telah merusak UX di dbushell.com
Saya sudah meneruskan masalah ini ke tim engineering
Ada masalah serupa di mana Google Translate merusak web app saya
Ada banyak error sentry terkait browser extension saat bekerja
Saya penasaran variabel apa yang paling bisa merusak web
Saya penasaran bagaimana orang menangani browser extension yang bersifat bermusuhan
Saya penasaran apakah metode ini bisa dipakai untuk membajak plugin