Grammarly eklentisinin web sitelerini neden bozduğu
- Son birkaç aydır web sitesi düzeninin garip şekilde bozulduğuna dair bildirimler sık sık alıyordu
- Sorunun nedeninin Grammarly tarayıcı eklentisi olduğu ortaya çıktı ve bunu doğrulamak için kendisi de doğrudan kurdu
Sorunun keşif süreci
- Grammarly eklentisi şu izinleri istiyor:
- tüm web sitelerindeki verilere erişim
- bildirim gösterme
- tarayıcı sekmelerine erişim
- Firefox'ta yapılan deneyde Grammarly'nin web sayfasına kendi stil sayfasını eklediği görüldü
- Bu stil sayfası web sayfası içinden doğrudan tespit edilemiyor (gizli stil sayfası)
- Hatta Content Security Policy'yi bile aşıyor
- Ayrıca
<html> etiketi içine <grammarly-desktop-integration> öğesi de ekleniyor (amacı belirsiz)
Neden benim sitemdi?
Yazarın müdahalesi
- İlk başta Mutation Observer kullanarak Grammarly'nin eklediği öğeleri tespit edip
!important stiliyle üzerine yazdı
- Daha sonra kendi CSS değişken adını
--rem yerine --🤡 (Unicode emoji) olarak değiştirdi
- Emoji, CSS değişken adı olarak geçerlidir
- Böylece Grammarly'nin küresel
--rem ayarıyla çakışma önlenebiliyor
Sorunun özü
- Grammarly, bir web eklentisi olarak tüm web sitelerine küresel stilleri zorla enjekte ediyor
- Özellikle
--rem gibi yaygın CSS değişken adları kullanması çok zararlı
- Kodun içinde rastgele sınıf adları kullanırken neden özellikle ortak bir adlandırmayı küresel olarak uyguladığı anlaşılır değil
- Gerçekte eklenti kullanılmasa bile kod enjekte ediliyor
Sonuç ve öneri
- Yazar Grammarly ile iletişime geçti; hızlı yanıt aldı ama teknik olarak sorunu anlayan bir yetkiliye ulaşamadı
- İdeal çözüm, Grammarly'nin
--🤡 gibi bir değişken adı kullanması ve diğer geliştiricilerin --remi özgürce kullanabilmesi
1 yorum
Hacker News görüşleri
Benim eklenti sorunum biraz farklı. Coğrafi konum testleri için proxy sunucuları arasında kolayca geçiş yapmayı sağlayan bir eklenti dağıtıyoruz
Betik ya da stilin bilinmediği bir sayfaya bir şey enjekte ederken, değişkenlere namespace vermek en azından asgari nezakettir
Pek çok ekran paylaşımı ve kaydın varsayılan olarak tüm web sitelerine yeşil bir müdahaleyi dahil ettiğini görmek korkutucu
Grammarly Extension'da çalışan bir mühendisim. dbushell.com'un UX'ini bozduğumuz için üzgünüm
Bu sorunu mühendislik ekibine ilettim
Google Translate'in web uygulamamı bozduğu benzer bir sorunum var
İş sırasında tarayıcı eklentileriyle ilgili çok sayıda sentry hatası alıyorum
Web'i en çok bozabilecek değişkenin ne olacağını merak ediyorum
Düşmanca tarayıcı eklentileriyle nasıl başa çıkıldığını merak ediyorum
Bu yöntemle eklentilerin ele geçirilip geçirilemeyeceğini merak ediyorum